提交
This commit is contained in:
64
src/views/govern/manage/app/agreement.vue
Normal file
64
src/views/govern/manage/app/agreement.vue
Normal file
@@ -0,0 +1,64 @@
|
||||
<template>
|
||||
<div class="agreement" style="height:calc(100vh - 190px)">
|
||||
<div style="margin-top: 5px;right: 10px;position: absolute;z-index: 9999999;">
|
||||
<el-button type="primary" @click="submit" icon="el-icon-s-claim">保存</el-button>
|
||||
</div>
|
||||
<WangEditor v-model="value" style="height:100%;"/>
|
||||
<!-- <div > -->
|
||||
<!-- <el-button type="primary" @click="submit" style="z-index: 1000000;">保存</el-button> -->
|
||||
<!-- </div> -->
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import {addAppInfo, queryAppInfo} from '@/api/app/setting'
|
||||
|
||||
export default {
|
||||
name: '',
|
||||
computed: {
|
||||
vth() {
|
||||
return window.sessionStorage.getItem("appheight") - 60;
|
||||
},
|
||||
},
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
value: '',
|
||||
id: ''
|
||||
}
|
||||
},
|
||||
created() {
|
||||
let dictypeData = localStorage.getItem('dictypeData')
|
||||
if (dictypeData) {
|
||||
dictypeData = JSON.parse(dictypeData)
|
||||
dictypeData.forEach(item => {
|
||||
if (item.code === 'appInformationType') {
|
||||
item.children.forEach(item2 => {
|
||||
if (item2.code === 'User_Agreement') {
|
||||
this.id = item2.id
|
||||
queryAppInfo(item2.id).then(res => {
|
||||
this.value = res.data.content
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
methods: {
|
||||
submit() {
|
||||
addAppInfo({
|
||||
type: this.id,
|
||||
content: this.value,
|
||||
}).then((res) => {
|
||||
if (res.code === 'A0000') {
|
||||
this.$message.success('保存成功')
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
|
||||
</style>
|
||||
64
src/views/govern/manage/app/company.vue
Normal file
64
src/views/govern/manage/app/company.vue
Normal file
@@ -0,0 +1,64 @@
|
||||
<template>
|
||||
<div class="agreement" style="height:calc(100vh - 190px)">
|
||||
<div style="margin-top: 5px;right: 10px;position: absolute;z-index: 9999999;">
|
||||
<el-button type="primary" @click="submit" icon="el-icon-s-claim">保存</el-button>
|
||||
</div>
|
||||
<WangEditor v-model="value" style="height:100%"/>
|
||||
<!-- <div class="mt10">
|
||||
<el-button type="primary" @click="submit">保存</el-button>
|
||||
</div> -->
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import {addAppInfo, queryAppInfo} from '@/api/app/setting'
|
||||
|
||||
export default {
|
||||
name: '',
|
||||
components: {},
|
||||
computed: {
|
||||
vth() {
|
||||
return window.sessionStorage.getItem("appheight") - 60;
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
value: '',
|
||||
id: ''
|
||||
}
|
||||
},
|
||||
created() {
|
||||
let dictypeData = localStorage.getItem('dictypeData')
|
||||
if (dictypeData) {
|
||||
dictypeData = JSON.parse(dictypeData)
|
||||
dictypeData.forEach(item => {
|
||||
if (item.code === 'appInformationType') {
|
||||
item.children.forEach(item2 => {
|
||||
if (item2.code === 'Company_Profile') {
|
||||
this.id = item2.id
|
||||
queryAppInfo(item2.id).then(res => {
|
||||
this.value = res.data.content
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
methods: {
|
||||
submit() {
|
||||
addAppInfo({
|
||||
type: this.id,
|
||||
content: this.value,
|
||||
}).then((res) => {
|
||||
if (res.code === 'A0000') {
|
||||
this.$message.success('保存成功')
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
|
||||
</style>
|
||||
64
src/views/govern/manage/app/dataBank.vue
Normal file
64
src/views/govern/manage/app/dataBank.vue
Normal file
@@ -0,0 +1,64 @@
|
||||
<template>
|
||||
<div class="agreement" style="height:calc(100vh - 190px)">
|
||||
<div style="margin-top: 5px;right: 10px;position: absolute;z-index: 9999999;">
|
||||
<el-button type="primary" @click="submit" icon="el-icon-s-claim">保存</el-button>
|
||||
</div>
|
||||
<WangEditor v-model="value" style="height:100%"/>
|
||||
<!-- <div class="mt10">
|
||||
<el-button type="primary" @click="submit">保存</el-button>
|
||||
</div> -->
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import {addAppInfo, queryAppInfo} from '@/api/app/setting'
|
||||
|
||||
export default {
|
||||
name: '',
|
||||
computed: {
|
||||
vth() {
|
||||
return window.sessionStorage.getItem("appheight") - 60;
|
||||
},
|
||||
},
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
value: '',
|
||||
id: ''
|
||||
}
|
||||
},
|
||||
created() {
|
||||
let dictypeData = localStorage.getItem('dictypeData')
|
||||
if (dictypeData) {
|
||||
dictypeData = JSON.parse(dictypeData)
|
||||
dictypeData.forEach(item => {
|
||||
if (item.code === 'appInformationType') {
|
||||
item.children.forEach(item2 => {
|
||||
if (item2.code === 'Data_base') {
|
||||
this.id = item2.id
|
||||
queryAppInfo(item2.id).then(res => {
|
||||
this.value = res.data.content
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
methods: {
|
||||
submit() {
|
||||
addAppInfo({
|
||||
type: this.id,
|
||||
content: this.value,
|
||||
}).then((res) => {
|
||||
if (res.code === 'A0000') {
|
||||
this.$message.success('保存成功')
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
|
||||
</style>
|
||||
70
src/views/govern/manage/app/index.vue
Normal file
70
src/views/govern/manage/app/index.vue
Normal file
@@ -0,0 +1,70 @@
|
||||
<template>
|
||||
<Page :loading="loading">
|
||||
<el-tabs v-model="activeName" type="card" @tab-click="handleClick" >
|
||||
<el-tab-pane lazy label="用户协议" name="first">
|
||||
<Agreement/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane lazy label="个人信息保护政策" name="six">
|
||||
<Policy/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane lazy label="系统介绍" name="second">
|
||||
<Introduce/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane lazy label="使用手册" name="three">
|
||||
<Specification/>
|
||||
</el-tab-pane>
|
||||
<!-- <el-tab-pane lazy label="资料库" name="four">
|
||||
<DataBank/>
|
||||
</el-tab-pane> -->
|
||||
<el-tab-pane lazy label="公司介绍" name="five">
|
||||
<Company/>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</Page>
|
||||
</template>
|
||||
<script>
|
||||
import Agreement from './agreement.vue'
|
||||
import DataBank from "./dataBank.vue"
|
||||
import Introduce from "./introduce.vue"
|
||||
import Specification from "./specification.vue";
|
||||
import Company from "./company.vue";
|
||||
import Policy from "./policy.vue";
|
||||
import {queryPersonSet} from '@/api/app/setting'
|
||||
|
||||
export default {
|
||||
name: 'GovernManageApp',
|
||||
components: {
|
||||
Agreement,
|
||||
DataBank,
|
||||
Introduce,
|
||||
Specification,
|
||||
Company,
|
||||
Policy
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: 'first',
|
||||
personSet: "",
|
||||
loading: false
|
||||
}
|
||||
},
|
||||
created() {
|
||||
//
|
||||
// queryPersonSet().then(res => {
|
||||
// console.log(res)
|
||||
// this.personSet = res.data
|
||||
// this.loading = false
|
||||
// })
|
||||
},
|
||||
methods: {
|
||||
handleClick(tab, event) {
|
||||
console.log(tab, event)
|
||||
},
|
||||
changeTab(e) {
|
||||
this.activeName = e
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss"></style>
|
||||
64
src/views/govern/manage/app/introduce.vue
Normal file
64
src/views/govern/manage/app/introduce.vue
Normal file
@@ -0,0 +1,64 @@
|
||||
<template>
|
||||
<div class="agreement" style="height:calc(100vh - 190px)">
|
||||
<div style="margin-top: 5px;right: 10px;position: absolute;z-index: 9999999;">
|
||||
<el-button type="primary" @click="submit" icon="el-icon-s-claim">保存</el-button>
|
||||
</div>
|
||||
<WangEditor v-model="value" style="height:100%"/>
|
||||
<!-- <div class="mt10">
|
||||
<el-button type="primary" @click="submit">保存</el-button>
|
||||
</div> -->
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import {addAppInfo, queryAppInfo} from '@/api/app/setting'
|
||||
|
||||
export default {
|
||||
name: '',
|
||||
components: {},
|
||||
computed: {
|
||||
vth() {
|
||||
return window.sessionStorage.getItem("appheight") - 60;
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
value: '',
|
||||
id: ''
|
||||
}
|
||||
},
|
||||
created() {
|
||||
let dictypeData = localStorage.getItem('dictypeData')
|
||||
if (dictypeData) {
|
||||
dictypeData = JSON.parse(dictypeData)
|
||||
dictypeData.forEach(item => {
|
||||
if (item.code === 'appInformationType') {
|
||||
item.children.forEach(item2 => {
|
||||
if (item2.code === 'introduction') {
|
||||
this.id = item2.id
|
||||
queryAppInfo(item2.id).then(res => {
|
||||
this.value = res.data.content
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
methods: {
|
||||
submit() {
|
||||
addAppInfo({
|
||||
type: this.id,
|
||||
content: this.value,
|
||||
}).then((res) => {
|
||||
if (res.code === 'A0000') {
|
||||
this.$message.success('保存成功')
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
|
||||
</style>
|
||||
64
src/views/govern/manage/app/policy.vue
Normal file
64
src/views/govern/manage/app/policy.vue
Normal file
@@ -0,0 +1,64 @@
|
||||
<template>
|
||||
<div class="agreement" style="height:calc(100vh - 190px)">
|
||||
<div style="margin-top: 5px;right: 10px;position: absolute;z-index: 9999999;">
|
||||
<el-button type="primary" @click="submit" icon="el-icon-s-claim">保存</el-button>
|
||||
</div>
|
||||
<WangEditor v-model="value" style="height:100%"/>
|
||||
<!-- <div > -->
|
||||
<!-- <el-button type="primary" @click="submit" style="z-index: 1000000;">保存</el-button> -->
|
||||
<!-- </div> -->
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import {addAppInfo, queryAppInfo} from '@/api/app/setting'
|
||||
|
||||
export default {
|
||||
name: 'Policy',
|
||||
computed: {
|
||||
vth() {
|
||||
return window.sessionStorage.getItem("appheight") - 60;
|
||||
},
|
||||
},
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
value: '',
|
||||
id: ''
|
||||
}
|
||||
},
|
||||
created() {
|
||||
let dictypeData = localStorage.getItem('dictypeData')
|
||||
if (dictypeData) {
|
||||
dictypeData = JSON.parse(dictypeData)
|
||||
dictypeData.forEach(item => {
|
||||
if (item.code === 'appInformationType') {
|
||||
item.children.forEach(item2 => {
|
||||
if (item2.code === 'Personal_Infor_Protect') {
|
||||
this.id = item2.id
|
||||
queryAppInfo(item2.id).then(res => {
|
||||
this.value = res.data.content
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
methods: {
|
||||
submit() {
|
||||
addAppInfo({
|
||||
type: this.id,
|
||||
content: this.value,
|
||||
}).then((res) => {
|
||||
if (res.code === 'A0000') {
|
||||
this.$message.success('保存成功')
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
|
||||
</style>
|
||||
64
src/views/govern/manage/app/specification.vue
Normal file
64
src/views/govern/manage/app/specification.vue
Normal file
@@ -0,0 +1,64 @@
|
||||
<template>
|
||||
<div class="agreement" style="height:calc(100vh - 190px)">
|
||||
<div style="margin-top: 5px;right: 10px;position: absolute;z-index: 9999999;">
|
||||
<el-button type="primary" @click="submit" icon="el-icon-s-claim">保存</el-button>
|
||||
</div>
|
||||
<WangEditor v-model="value" style="height:100%"/>
|
||||
<!-- <div class="mt10">
|
||||
<el-button type="primary" @click="submit">保存</el-button>
|
||||
</div> -->
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import {addAppInfo, queryAppInfo} from '@/api/app/setting'
|
||||
|
||||
export default {
|
||||
name: '',
|
||||
components: {},
|
||||
computed: {
|
||||
vth() {
|
||||
return window.sessionStorage.getItem("appheight") - 60;
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
value: '',
|
||||
id: ''
|
||||
}
|
||||
},
|
||||
created() {
|
||||
let dictypeData = localStorage.getItem('dictypeData')
|
||||
if (dictypeData) {
|
||||
dictypeData = JSON.parse(dictypeData)
|
||||
dictypeData.forEach(item => {
|
||||
if (item.code === 'appInformationType') {
|
||||
item.children.forEach(item2 => {
|
||||
if (item2.code === 'User_Manual') {
|
||||
this.id = item2.id
|
||||
queryAppInfo(item2.id).then(res => {
|
||||
this.value = res.data.content
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
methods: {
|
||||
submit() {
|
||||
addAppInfo({
|
||||
type: this.id,
|
||||
content: this.value,
|
||||
}).then((res) => {
|
||||
if (res.code === 'A0000') {
|
||||
this.$message.success('保存成功')
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
|
||||
</style>
|
||||
692
src/views/govern/manage/basic/dictionary.vue
Normal file
692
src/views/govern/manage/basic/dictionary.vue
Normal file
@@ -0,0 +1,692 @@
|
||||
<template>
|
||||
<div class="page" >
|
||||
<el-form :inline="true" :model="formInline" ref="formInline" class="demo-form-inline" style="height: auto;">
|
||||
<el-form-item label="数据分类:">
|
||||
<el-select v-model="formInline.dataType" multiple filterable collapse-tags clearable
|
||||
placeholder="请选择数据分类"
|
||||
@change="formInlineChange">
|
||||
<el-option v-for="item in dataTypeSelect" :key="item.value" :label="item.label"
|
||||
:value="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="数据存储:">
|
||||
<el-select v-model="formInline.classId" multiple filterable collapse-tags clearable placeholder="请选择数据存储"
|
||||
@change="formInlineChange">
|
||||
<el-option v-for="item in dataSelect" :key="item.code" :label="item.label"
|
||||
:value="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="过滤筛选:">
|
||||
<el-input v-model="formInline.searchValue" placeholder="数据名称、别名、名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="queryCsDictDataPage" icon="el-icon-search">查询</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetFormInline" icon="el-icon-setting">重置</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item style="float: right;">
|
||||
<el-button type="primary" @click="add" icon="el-icon-plus">新增字典</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-table
|
||||
stripe
|
||||
style="width: 100%;"
|
||||
:data="tableData"
|
||||
height="calc(100vh - 280px)"
|
||||
border
|
||||
v-loading="loading"
|
||||
highlight-current-row
|
||||
header-cell-class-name="table_header"
|
||||
>
|
||||
<el-table-column align="center" show-overflow-tooltip min-width="120" prop="classId" label="数据分类">
|
||||
<template slot-scope="scope">
|
||||
<span>{{
|
||||
dataTypeSelect.find((item) => item.value == scope.row.dataType) &&
|
||||
dataTypeSelect.find((item) => item.value == scope.row.dataType).label
|
||||
}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" show-overflow-tooltip min-width="180" prop="name"
|
||||
label="数据名称"></el-table-column>
|
||||
<el-table-column align="center" show-overflow-tooltip min-width="180" prop="otherName"
|
||||
label="别名"></el-table-column>
|
||||
<el-table-column align="center" show-overflow-tooltip min-width="150" prop="showName"
|
||||
label="展示名称"></el-table-column>
|
||||
<el-table-column align="center" show-overflow-tooltip min-width="100" prop="phase" label="相别"
|
||||
width="80px">
|
||||
<template slot-scope="scope"> {{ scope.row.phase === 'M' ? '-' : scope.row.phase }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" show-overflow-tooltip min-width="100" prop="unit" label="单位"
|
||||
width="80px">
|
||||
<template slot-scope="scope"> {{ scope.row.unit == null ? '-' : scope.row.unit }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" show-overflow-tooltip min-width="130" prop="type"
|
||||
label="基础数据类型">
|
||||
<template slot-scope="scope"> {{ scope.row.type == '' ? '-' : scope.row.type }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" show-overflow-tooltip min-width="150" prop="harmStart"
|
||||
label="数据谐波次数">
|
||||
<template slot-scope="scope"> {{ scope.row.harmStart }} - {{ scope.row.harmEnd }}</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column min-width='80' prop="harmEnd" label="数据结束谐波次数"> </el-table-column> -->
|
||||
<el-table-column align="center" min-width="180" prop="statMethod" show-overflow-tooltip
|
||||
label="数据统计方法">
|
||||
<template slot-scope="scope"> {{ scope.row.statMethod == null ? '-' : scope.row.statMethod }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" min-width="120" prop="classId" label="数据存储" show-overflow-tooltip
|
||||
:formatter="formFilter"></el-table-column>
|
||||
<el-table-column align="center" min-width="110" prop="resourcesId" label="数据来源"
|
||||
show-overflow-tooltip :formatter="formFilter">
|
||||
<template slot-scope="scope"> {{
|
||||
scope.row.resourcesId == null ? '-' : scope.row.resourcesId
|
||||
}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column align="center" min-width="100" prop="sort" label="排序" width="80px"></el-table-column>-->
|
||||
<el-table-column align="center" min-width="200" label="操作">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="primary" @click="edit(scope.row)" icon="el-icon-edit">编辑</el-button>
|
||||
<el-button size="mini" type="danger" @click="del(scope.row.id)" icon="el-icon-delete">删除
|
||||
</el-button>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
background
|
||||
align="right"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="pageChange"
|
||||
:current-page="formInline.pageNum"
|
||||
:page-sizes="[20, 30, 40, 50, 100]"
|
||||
:page-size="formInline.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total"
|
||||
class="mt10"
|
||||
>
|
||||
</el-pagination>
|
||||
<el-dialog :title="dialogTitle" :visible.sync="drawer" size="80%" custom-class="dictionary-draw" class="Cn-page" :before-close="closeDialog"
|
||||
width="1000px">
|
||||
<el-divider content-position="center">基础数据</el-divider>
|
||||
<el-form :model="form" :label-width="formLabelWidth" :rules="rules" ref="form">
|
||||
<el-form-item label="数据分类:" prop="dataType">
|
||||
<el-select v-model="form.dataType" filterable clearable placeholder="请选择数据分类">
|
||||
<el-option v-for="item in dataTypeSelect" :key="item.value" :label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="数据名称:" prop="name">
|
||||
<el-input v-model="form.name" autocomplete="off" placeholder="请输入数据名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="别名:" prop="otherName" >
|
||||
<el-input v-model="form.otherName" autocomplete="off" placeholder="请输入别名"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="展示名称:" prop="showName" >
|
||||
<el-input v-model="form.showName" autocomplete="off" placeholder="请输入展示名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="相别:" prop="phase" >
|
||||
<el-select v-model="form.phase" filterable clearable placeholder="请选择相别">
|
||||
<el-option v-for="item in phaseSelect" :key="item.value" :label="item.label"
|
||||
:value="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="单位:" prop="unit" >
|
||||
<el-input v-model="form.unit" autocomplete="off" placeholder="请输入单位"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="基础数据类型:" prop="type" >
|
||||
<el-input v-model="form.type" autocomplete="off" placeholder="请输入基础数据类型"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="开始结束次数:" prop="harmStart" >
|
||||
<div class="input-2">
|
||||
<el-input type="number" v-model="form.harmStart" autocomplete="off"></el-input>
|
||||
<div style="margin-left: 10px;">-</div>
|
||||
<el-input style="margin-left: 10px;" type="number" v-model="form.harmEnd"
|
||||
autocomplete="off"></el-input>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="统计方法:" prop="statMethod" >
|
||||
<el-select v-model="form.statMethod" multiple filterable clearable placeholder="请选择统计方法">
|
||||
<el-option v-for="item in statMethodSelect" :key="item.value" :label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="数据存储:" prop="classId" >
|
||||
<el-select v-model="form.classId" filterable clearable placeholder="请选择数据存储">
|
||||
<el-option v-for="item in dataSelect" :key="item.code" :label="item.label"
|
||||
:value="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="报表数据来源:" prop="resourcesId" >
|
||||
<el-select v-model="form.resourcesId" filterable clearable placeholder="请选择报表数据来源">
|
||||
<el-option v-for="item in resourcesIdSelect" :key="item.code" :label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="序号:" prop="sort" >
|
||||
<el-input type="number" v-model="form.sort" autocomplete="off" placeholder="请输入序号"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="限值名称:" prop="limitName" >
|
||||
<el-input type="text" v-model="form.limitName" autocomplete="off" placeholder="请输入限值名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="限值表名:" prop="limitTable" >
|
||||
<el-input type="text" v-model="form.limitTable" autocomplete="off"
|
||||
placeholder="请输入限值表名"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="超标判断方式:" prop="formula" >
|
||||
<el-select v-model="form.formula" filterable clearable placeholder="请选择超标判断方式">
|
||||
<el-option v-for="item in formulaSelect" :key="item.code" :label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-divider content-position="center">拓展数据</el-divider>
|
||||
<el-form :model="form" :label-width="formLabelWidth" :rules="rules2" ref="form2">
|
||||
<el-form-item label="参数缺省值:" prop="defaultValue">
|
||||
<el-input v-model="form.defaultValue" autocomplete="off" placeholder="请输入参数缺省值"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="事件类别:" prop="eventType">
|
||||
<el-input v-model="form.eventType" autocomplete="off" placeholder="请输入事件类别"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="设置最大值:" prop="maxNum" >
|
||||
<el-input type="number" v-model="form.maxNum" autocomplete="off" placeholder="请输入设置最大值"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="设置最小值:" prop="minNum" >
|
||||
<el-input type="number" v-model="form.minNum" autocomplete="off" placeholder="请输入设置最小值"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="枚举序列:" prop="setValue" >
|
||||
<el-input v-model="form.setValue" autocomplete="off" placeholder="请输入枚举序列"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="字符串长度上限:" prop="strlen" >
|
||||
<el-input type="number" v-model="form.strlen" autocomplete="off" placeholder="请输入字符串长度上限"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="上送规则:" prop="tranRule" >
|
||||
<el-input v-model="form.tranRule" autocomplete="off" placeholder="请输入上送规则"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否可远程控制:" prop="ctlSts">
|
||||
<el-radio v-model="form.ctlSts" :label="1">是</el-radio>
|
||||
<el-radio v-model="form.ctlSts" :label="0">否</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否需遥控校验:" prop="curSts">
|
||||
<el-radio v-model="form.curSts" :label="1">是</el-radio>
|
||||
<el-radio v-model="form.curSts" :label="0">否</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否存储:" prop="storeFlag">
|
||||
<el-radio v-model="form.storeFlag" :label="1">是</el-radio>
|
||||
<el-radio v-model="form.storeFlag" :label="0">否</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否加密:" prop="storeFlag">
|
||||
<el-radio v-model="form.storeFlag" :label="1">是</el-radio>
|
||||
<el-radio v-model="form.storeFlag" :label="0">否</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item label="数据是否上送:" prop="tranFlag">
|
||||
<el-radio v-model="form.tranFlag" :label="1">是</el-radio>
|
||||
<el-radio v-model="form.tranFlag" :label="0">否</el-radio>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="closeDialog">取 消</el-button>
|
||||
<el-button type="primary" @click="addCsDictData">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {addCsDictData, queryCsDictDataPage, delCsDictData, updateCsDictData} from '@/api/app/setting.js'
|
||||
import {dicData} from "@/assets/commjs/dictypeData";
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
loading: true,
|
||||
drawer: false,
|
||||
dialogTitle: '新增字典数据',
|
||||
form: {
|
||||
classId: null,
|
||||
ctlSts: null,
|
||||
curSts: null,
|
||||
dataType: null,
|
||||
defaultValue: null,
|
||||
eventType: null,
|
||||
harmEnd: null,
|
||||
harmStart: null,
|
||||
maxNum: null,
|
||||
minNum: null,
|
||||
name: null,
|
||||
otherName: null,
|
||||
phase: null,
|
||||
resourcesId: null,
|
||||
setValue: null,
|
||||
showName: null,
|
||||
sort: null,
|
||||
statMethod: null,
|
||||
storeFlag: null,
|
||||
strlen: null,
|
||||
systemType: null,
|
||||
tranFlag: null,
|
||||
tranRule: null,
|
||||
type: null,
|
||||
unit: null,
|
||||
formula: null,
|
||||
limitName: null,
|
||||
limitTable: "pq_overlimit",
|
||||
},
|
||||
dataTypeSelect: [],
|
||||
systemTypeSelect: [],
|
||||
resourcesIdSelect: [],
|
||||
formulaSelect: [],
|
||||
dataSelect: [],
|
||||
typeSelect: [],
|
||||
// A、B、C、T、M
|
||||
phaseSelect: [
|
||||
{
|
||||
label: 'A相',
|
||||
value: 'A',
|
||||
},
|
||||
{
|
||||
label: 'B相',
|
||||
value: 'B',
|
||||
},
|
||||
{
|
||||
label: 'C相',
|
||||
value: 'C',
|
||||
},
|
||||
{
|
||||
label: 'T相',
|
||||
value: 'T',
|
||||
},
|
||||
],
|
||||
statMethodSelect: [
|
||||
{
|
||||
label: '平均值',
|
||||
value: 'avg',
|
||||
},
|
||||
{
|
||||
label: '最大值',
|
||||
value: 'max',
|
||||
},
|
||||
{
|
||||
label: '最小值',
|
||||
value: 'min',
|
||||
},
|
||||
{
|
||||
label: 'CP95值',
|
||||
value: 'cp95',
|
||||
},
|
||||
],
|
||||
formLabelWidth: '140px',
|
||||
formInline: {
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
searchValue: '',
|
||||
dataType: [],
|
||||
classId: [],
|
||||
},
|
||||
total: 0,
|
||||
tableData: [],
|
||||
tabHeight: 'calc(100vh - 255px)',
|
||||
rules: {
|
||||
dataType: [
|
||||
{required: true, message: '请输入数据分类', trigger: 'blur'},
|
||||
{min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur'}
|
||||
],
|
||||
name: [
|
||||
{required: true, message: '请输入数据名称', trigger: 'blur'}
|
||||
],
|
||||
otherName: [
|
||||
{type: 'date', required: true, message: '请输入别名', trigger: 'blur'}
|
||||
],
|
||||
showName: [
|
||||
{type: 'date', required: true, message: '请输入展示名称', trigger: 'blur'}
|
||||
],
|
||||
phase: [
|
||||
{type: 'array', required: true, message: '请选择相别', trigger: 'blur'}
|
||||
],
|
||||
unit: [
|
||||
{required: true, message: '请输入单位', trigger: 'blur'}
|
||||
],
|
||||
type: [
|
||||
{required: true, message: '请输入基础数据类型', trigger: 'blur'}
|
||||
],
|
||||
harmStart: [
|
||||
{required: true, message: '请填写开始结束次数', trigger: 'blur'}
|
||||
],
|
||||
statMethod: [
|
||||
{required: true, message: '请选择统计方法', trigger: 'blur'}
|
||||
],
|
||||
classId: [
|
||||
{required: true, message: '请选择数据存储', trigger: 'blur'}
|
||||
],
|
||||
resourcesId: [
|
||||
{required: true, message: '请选择报表数据来源', trigger: 'blur'}
|
||||
],
|
||||
sort: [
|
||||
{required: true, message: '请填写序号', trigger: 'blur'}
|
||||
],
|
||||
},
|
||||
rules2: {
|
||||
defaultValue: [
|
||||
{required: true, message: '请输入参数缺省值', trigger: 'blur'},
|
||||
{min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur'}
|
||||
],
|
||||
eventType: [
|
||||
{required: true, message: '请输入事件类别', trigger: 'blur'}
|
||||
],
|
||||
maxNum: [
|
||||
{type: 'date', required: true, message: '请设置最大值', trigger: 'blur'}
|
||||
],
|
||||
minNum: [
|
||||
{type: 'date', required: true, message: '请设置最小值', trigger: 'blur'}
|
||||
],
|
||||
setValue: [
|
||||
{type: 'array', required: true, message: '请输入枚举序列', trigger: 'blur'}
|
||||
],
|
||||
strlen: [
|
||||
{required: true, message: '请输入字符串长度上限', trigger: 'blur'}
|
||||
],
|
||||
tranRule: [
|
||||
{required: true, message: '请填写上送规则', trigger: 'blur'}
|
||||
],
|
||||
ctlSts: [
|
||||
{required: true, message: '请选择是否可远程控制', trigger: 'blur'}
|
||||
],
|
||||
storeFlag: [
|
||||
{required: true, message: '请选择是否需遥控校验', trigger: 'blur'}
|
||||
],
|
||||
tranFlag: [
|
||||
{required: true, message: '请选择是否存储||是否加密', trigger: 'blur'}
|
||||
],
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
vth() {
|
||||
return window.sessionStorage.getItem("appheight") - 145;
|
||||
},
|
||||
|
||||
},
|
||||
created() {
|
||||
this.queryCsDictDataPage()
|
||||
},
|
||||
mounted() {
|
||||
const dictypeData = JSON.parse(localStorage.getItem('dictypeData'))
|
||||
if (dictypeData) {
|
||||
dictypeData.forEach((item) => {
|
||||
let arr = [
|
||||
{
|
||||
code: 'Data',
|
||||
key: 'dataSelect',
|
||||
},
|
||||
{
|
||||
code: 'Cs_Data_Type',
|
||||
key: 'dataTypeSelect',
|
||||
},
|
||||
{
|
||||
code: 'System_Type',
|
||||
key: 'systemTypeSelect',
|
||||
},
|
||||
{
|
||||
code: 'Data_Day',
|
||||
key: 'resourcesIdSelect',
|
||||
},
|
||||
{
|
||||
code: 'Type',
|
||||
key: 'typeSelect',
|
||||
},
|
||||
{
|
||||
code: 'Limit_Value_Judgment',
|
||||
key: 'formulaSelect',
|
||||
},
|
||||
]
|
||||
arr.forEach((item2) => {
|
||||
if (item.code == item2.code) {
|
||||
this[item2.key] = item.children.map((item3) => {
|
||||
return {
|
||||
label: item3.name,
|
||||
value: item3.id,
|
||||
code: item3.code,
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
this.loading = false
|
||||
},
|
||||
methods: {
|
||||
closeDialog(){
|
||||
this.drawer=false
|
||||
this.resetForm()
|
||||
},
|
||||
resetForm() {
|
||||
|
||||
if (this.$refs["form"]) {
|
||||
this.$refs["form"].resetFields();
|
||||
this.$refs["form2"].resetFields();
|
||||
}
|
||||
},
|
||||
// 数据过滤
|
||||
formFilter(row, column) {
|
||||
if (column.property == "classId") {
|
||||
let title = "";
|
||||
dicData("Data", []).forEach((item) => {
|
||||
if (item.id == row.classId) {
|
||||
title = item.name;
|
||||
}
|
||||
});
|
||||
return title;
|
||||
} else if (column.property == "resourcesId") {
|
||||
let title = "";
|
||||
this.resourcesIdSelect.forEach((item) => {
|
||||
if (item.value == row.resourcesId) {
|
||||
title = item.label;
|
||||
}
|
||||
});
|
||||
return title;
|
||||
}
|
||||
},
|
||||
formInlineChange() {
|
||||
setTimeout(() => {
|
||||
const formInlineHeight = this.$refs.formInline.$el.offsetHeight
|
||||
console.log(formInlineHeight)
|
||||
this.tabHeight = 'calc(100vh - ' + (213 + formInlineHeight) + 'px)'
|
||||
}, 20)
|
||||
},
|
||||
pageChange(e) {
|
||||
console.log('pageChange!')
|
||||
console.log(e)
|
||||
this.formInline.pageNum = e
|
||||
this.queryCsDictDataPage()
|
||||
},
|
||||
handleSizeChange(val) {
|
||||
// console.log(`每页 ${val} 条`);
|
||||
this.formInline.pageNum = 1
|
||||
this.formInline.pageSize = val
|
||||
this.queryCsDictDataPage()
|
||||
},
|
||||
onSearch() {
|
||||
this.formInline.pageNum = 1
|
||||
this.queryCsDictDataPage()
|
||||
},
|
||||
addCsDictData() {
|
||||
if (this.form.id) {
|
||||
this.editSave()
|
||||
return
|
||||
}
|
||||
addCsDictData(this.form).then((res) => {
|
||||
console.warn(res)
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: '添加成功!',
|
||||
})
|
||||
this.drawer = false
|
||||
this.onSearch()
|
||||
} else {
|
||||
this.$message({
|
||||
type: 'error',
|
||||
message: res.message,
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
queryCsDictDataPage() {
|
||||
queryCsDictDataPage(this.formInline).then((res) => {
|
||||
console.warn(res)
|
||||
this.tableData = res.data.records
|
||||
this.total = res.data.total
|
||||
})
|
||||
},
|
||||
resetFormInline() {
|
||||
this.formInline.searchValue = ''
|
||||
this.formInline.dataType = []
|
||||
this.formInline.classId = []
|
||||
},
|
||||
onSubmit() {
|
||||
console.log('submit!')
|
||||
},
|
||||
del(id) {
|
||||
this.$confirm('确定删除该字段吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
})
|
||||
.then(() => {
|
||||
delCsDictData(id).then((res) => {
|
||||
console.warn(res)
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: '删除成功!',
|
||||
})
|
||||
this.onSearch()
|
||||
} else {
|
||||
this.$message({
|
||||
type: 'error',
|
||||
message: res.message,
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
type: 'info',
|
||||
message: '已取消删除',
|
||||
})
|
||||
})
|
||||
},
|
||||
add() {
|
||||
const obj = {
|
||||
classId: null,
|
||||
ctlSts: null,
|
||||
curSts: null,
|
||||
dataType: null,
|
||||
defaultValue: null,
|
||||
eventType: null,
|
||||
harmEnd: null,
|
||||
harmStart: null,
|
||||
maxNum: null,
|
||||
minNum: null,
|
||||
name: null,
|
||||
otherName: null,
|
||||
phase: null,
|
||||
resourcesId: null,
|
||||
setValue: null,
|
||||
showName: null,
|
||||
sort: null,
|
||||
statMethod: null,
|
||||
storeFlag: null,
|
||||
strlen: null,
|
||||
systemType: null,
|
||||
tranFlag: null,
|
||||
tranRule: null,
|
||||
type: null,
|
||||
unit: null,
|
||||
formula: null,
|
||||
limitName: null,
|
||||
limitTable: "pq_overlimit",
|
||||
}
|
||||
this.dialogTitle = '新增字典数据'
|
||||
for (let key in this.form) {
|
||||
this.form[key] = obj[key]
|
||||
}
|
||||
delete this.form.id
|
||||
this.drawer = true
|
||||
},
|
||||
edit(item) {
|
||||
console.log(item)
|
||||
for (let key in this.form) {
|
||||
this.form[key] = item[key]
|
||||
if (key === 'statMethod' && item[key]) {
|
||||
this.form[key] = item[key].split(',')
|
||||
} else if (key === 'phase') {
|
||||
this.form[key] = ''
|
||||
}
|
||||
|
||||
}
|
||||
this.form.id = item.id
|
||||
this.dialogTitle = '编辑字典数据'
|
||||
this.drawer = true
|
||||
},
|
||||
editSave() {
|
||||
updateCsDictData(this.form).then((res) => {
|
||||
console.warn(res)
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: '修改成功!',
|
||||
})
|
||||
this.drawer = false
|
||||
this.onSearch()
|
||||
} else {
|
||||
this.$message({
|
||||
type: 'error',
|
||||
message: res.message,
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url("../../../../styles/comStyle.less");
|
||||
</style>
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .Cn-page .el-dialog__body .el-form {
|
||||
display: grid;
|
||||
padding-right: 30px;
|
||||
grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
|
||||
grid-gap: 10px 20px !important;
|
||||
-webkit-box-pack: center;
|
||||
-ms-flex-pack: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.page {
|
||||
.el-form-item {
|
||||
height: auto !important;
|
||||
}
|
||||
|
||||
.dictionary-draw {
|
||||
.el-dialog__body {
|
||||
padding-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.input-2 {
|
||||
display: flex;
|
||||
width: 245px;
|
||||
|
||||
.el-input {
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
43
src/views/govern/manage/basic/index.vue
Normal file
43
src/views/govern/manage/basic/index.vue
Normal file
@@ -0,0 +1,43 @@
|
||||
<template>
|
||||
<page>
|
||||
<el-tabs v-model="activeName" type="card" @tab-click="handleClick" >
|
||||
<el-tab-pane lazy label="数据字典" name="first">
|
||||
<Dictionary @changeTab="changeTab" v-if="activeName == 'first'" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane lazy label="程序版本" name="second">
|
||||
<Version @changeTab="changeTab" v-if="activeName == 'second'" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane lazy label="模版" name="three">
|
||||
<Temp @changeTab="changeTab" v-if="activeName == 'three'" />
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</page>
|
||||
</template>
|
||||
<script>
|
||||
import Dictionary from './dictionary.vue'
|
||||
import Version from './version.vue'
|
||||
import Temp from './template.vue'
|
||||
export default {
|
||||
name: 'GovernManageBasic',
|
||||
components: {
|
||||
Dictionary,
|
||||
Version,
|
||||
Temp,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: 'first',
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleClick(tab, event) {
|
||||
console.log(tab, event)
|
||||
},
|
||||
changeTab(e) {
|
||||
this.activeName = e
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss"></style>
|
||||
336
src/views/govern/manage/basic/template.vue
Normal file
336
src/views/govern/manage/basic/template.vue
Normal file
@@ -0,0 +1,336 @@
|
||||
<template>
|
||||
<div >
|
||||
<el-form :inline="true" :model="formInline" class="demo-form-inline">
|
||||
<el-form-item label="模版名称:">
|
||||
<el-input v-model="formInline.name" clearable placeholder="请输入名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="装置型号:">
|
||||
<el-select v-model="formInline.devType" placeholder="请选择" style="width: 100%" clearable>
|
||||
<el-option v-for="item in devTypeOptions" :key="item.value" :label="item.label"
|
||||
:value="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="onSearch" icon="el-icon-search">查询</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetFormInline" icon="el-icon-setting">重置</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item style="float: right">
|
||||
<!-- <el-button type="primary" icon="el-icon-plus" @click="add"
|
||||
v-if="userInfo.role.indexOf('工程')>-1 || userInfo.role.indexOf('运维管理员')>-1">
|
||||
新增模版
|
||||
</el-button> -->
|
||||
<el-button type="primary" icon="el-icon-plus" @click="add">
|
||||
新增模版
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-table
|
||||
stripe
|
||||
style="width: 100%"
|
||||
:data="tableData"
|
||||
border
|
||||
header-cell-class-name="table_header"
|
||||
highlight-current-row
|
||||
height="calc(100vh - 280px)"
|
||||
>
|
||||
<el-table-column prop="devTypeName" label="装置型号" align="center"></el-table-column>
|
||||
<el-table-column prop="name" label="模板名称" align="center"></el-table-column>
|
||||
<el-table-column prop="versionNo" label="版本号" align="center"></el-table-column>
|
||||
<el-table-column prop="versionDate" label="版本时间" align="center"></el-table-column>
|
||||
<el-table-column label="操作" width="220px" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="danger" @click="del(scope.row)" icon="el-icon-delete">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
background
|
||||
align="right"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="pageChange"
|
||||
:current-page="formInline.pageNum"
|
||||
:page-sizes="[20, 30, 40, 50, 100]"
|
||||
:page-size="formInline.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total"
|
||||
class="mt10"
|
||||
>
|
||||
</el-pagination>
|
||||
<el-dialog :title="dialogTitle" :visible.sync="dialogFormVisible">
|
||||
<el-form :model="form" :label-width="formLabelWidth">
|
||||
<el-form-item label="升级文件:">
|
||||
<el-upload
|
||||
class="upload-demo"
|
||||
action="123"
|
||||
:limit="1"
|
||||
:auto-upload="false"
|
||||
:on-change="fileChange"
|
||||
:on-exceed="fileExceed"
|
||||
>
|
||||
<el-button size="small" type="primary">点击上传</el-button>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogFormVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="addDevModel">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<el-dialog :visible.sync="lookDialog">
|
||||
<el-tabs v-model="activeName">
|
||||
<el-tab-pane label="测量数据" name="first">
|
||||
<el-table
|
||||
stripe
|
||||
:cell-style="{ textAlign: 'center' }"
|
||||
:header-cell-style="{ textAlign: 'center' }"
|
||||
:data="tableData"
|
||||
height="50vh"
|
||||
v-if="activeName == 'first'"
|
||||
>
|
||||
<el-table-column prop="date" label="数据名称" width="180"></el-table-column>
|
||||
<el-table-column prop="name" label="数据类型" width="180"></el-table-column>
|
||||
<el-table-column prop="address" label="单位"></el-table-column>
|
||||
</el-table>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="电能量数据" name="second">
|
||||
<el-table
|
||||
stripe
|
||||
:cell-style="{ textAlign: 'center' }"
|
||||
:header-cell-style="{ textAlign: 'center' }"
|
||||
:data="tableData"
|
||||
height="50vh"
|
||||
v-if="activeName == 'second'"
|
||||
>
|
||||
<el-table-column prop="date" label="数据名称" width="180"></el-table-column>
|
||||
<el-table-column prop="name" label="数据类型" width="180"></el-table-column>
|
||||
<el-table-column prop="address" label="单位"></el-table-column>
|
||||
</el-table>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {queryDevModelPage, addDevModel, AuditDevModel, queryByid, queryByCode} from '@/api/app/setting.js'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
loading: true,
|
||||
dialogFormVisible: false,
|
||||
activeName: 'second',
|
||||
lookDialog: false,
|
||||
dialogTitle: '新增字典数据',
|
||||
form: {
|
||||
devType: '',
|
||||
devTypeName: '',
|
||||
filePath: '',
|
||||
// softInfoId: '',
|
||||
// versionDate: '',
|
||||
// versionNo: '',
|
||||
},
|
||||
formLabelWidth: '120px',
|
||||
formInline: {
|
||||
devType: '',
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
versionStartDate: '',
|
||||
versionendDate: '',
|
||||
date: [],
|
||||
name: '',
|
||||
},
|
||||
file: '',
|
||||
fileList: [], // 回显‰
|
||||
tableData: [],
|
||||
total: 0,
|
||||
options: [
|
||||
{
|
||||
value: '选项1',
|
||||
label: '黄金糕',
|
||||
},
|
||||
{
|
||||
value: '选项2',
|
||||
label: '双皮奶',
|
||||
},
|
||||
{
|
||||
value: '选项3',
|
||||
label: '蚵仔煎',
|
||||
},
|
||||
{
|
||||
value: '选项4',
|
||||
label: '龙须面',
|
||||
},
|
||||
{
|
||||
value: '选项5',
|
||||
label: '北京烤鸭',
|
||||
},
|
||||
],
|
||||
// tabHeight: 'calc(100vh - 255px)',
|
||||
devTypeOptions: [],
|
||||
typeOptions: [],
|
||||
userInfo: {},
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
vth() {
|
||||
return window.sessionStorage.getItem("appheight") - 145;
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.userInfo = sessionStorage.getItem('Info')
|
||||
queryByCode('Direct_Connected_Device').then((res) => {
|
||||
queryByid(res.data.id).then((res) => {
|
||||
this.devTypeOptions = res.data.map((item) => {
|
||||
return {
|
||||
value: item.id,
|
||||
label: item.name,
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
},
|
||||
mounted() {
|
||||
this.onSearch()
|
||||
this.loading = false
|
||||
},
|
||||
methods: {
|
||||
devTypeChange(e) {
|
||||
console.log(e)
|
||||
this.form.devTypeName = this.devTypeOptions.filter((item) => item.value == e)[0].label
|
||||
},
|
||||
fileChange(e) {
|
||||
console.log('fileChange!')
|
||||
console.log(e)
|
||||
this.file = e.raw
|
||||
},
|
||||
fileExceed(e) {
|
||||
console.log('fileExceed!')
|
||||
console.log(e)
|
||||
this.$message({
|
||||
message: '最多只能上传一个文件,如若替换请先删除',
|
||||
type: 'error',
|
||||
})
|
||||
},
|
||||
onSearch() {
|
||||
console.log('submit!')
|
||||
queryDevModelPage(this.formInline).then((res) => {
|
||||
console.log(res)
|
||||
this.tableData = res.data.records
|
||||
this.total = res.data.total
|
||||
})
|
||||
},
|
||||
resetFormInline() {
|
||||
this.formInline.devType = ''
|
||||
this.formInline.name = ''
|
||||
this.formInline.versionStartDate = ''
|
||||
this.formInline.versionendDate = ''
|
||||
this.formInline.date = []
|
||||
},
|
||||
addDevModel() {
|
||||
if (!this.file) {
|
||||
return this.$message({
|
||||
message: '请上传文件',
|
||||
type: 'error',
|
||||
})
|
||||
}
|
||||
addDevModel(this.file).then((res) => {
|
||||
if (res.code == 'A0000') {
|
||||
this.onSearch()
|
||||
this.$message({
|
||||
message: '添加成功',
|
||||
type: 'success',
|
||||
})
|
||||
this.dialogFormVisible = false
|
||||
}
|
||||
})
|
||||
},
|
||||
AuditDevModel() {
|
||||
for (let key in this.form) {
|
||||
if (!this.form[key]) {
|
||||
this.$message({
|
||||
message: '请完善表单信息',
|
||||
type: 'error',
|
||||
})
|
||||
return
|
||||
}
|
||||
}
|
||||
AuditDevModel(this.form).then((res) => {
|
||||
if (res.code == 'A0000') {
|
||||
this.onSearch()
|
||||
this.$message({
|
||||
message: '编辑成功',
|
||||
type: 'success',
|
||||
})
|
||||
this.dialogFormVisible = false
|
||||
}
|
||||
})
|
||||
},
|
||||
pageChange(e) {
|
||||
console.log('pageChange!')
|
||||
console.log(e)
|
||||
this.formInline.pageNum = e
|
||||
this.onSearch()
|
||||
},
|
||||
handleSizeChange(val) {
|
||||
// console.log(`每页 ${val} 条`);
|
||||
this.formInline.pageNum = 1
|
||||
this.formInline.pageSize = val
|
||||
this.onSearch()
|
||||
},
|
||||
dateChange(e) {
|
||||
console.log(e)
|
||||
if (e.length > 0) {
|
||||
this.formInline.versionStartDate = e[0]
|
||||
this.formInline.versionendDate = e[1]
|
||||
}
|
||||
},
|
||||
del(item) {
|
||||
this.$confirm('确定删除吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
}).then(() => {
|
||||
AuditDevModel({
|
||||
id: item.id,
|
||||
status: 0,
|
||||
}).then((res) => {
|
||||
console.log(res)
|
||||
if (res.code == 'A0000') {
|
||||
this.onSearch()
|
||||
this.$message({
|
||||
message: '删除成功',
|
||||
type: 'success',
|
||||
})
|
||||
this.dialogFormVisible = false
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
edit(item) {
|
||||
this.form.id = item.id
|
||||
for (let key in this.form) {
|
||||
this.form[key] = item[key]
|
||||
}
|
||||
this.dialogTitle = '设备数据模版编辑'
|
||||
this.dialogFormVisible = true
|
||||
},
|
||||
look() {
|
||||
this.lookDialog = true
|
||||
},
|
||||
add() {
|
||||
for (let key in this.form) {
|
||||
this.form[key] = ''
|
||||
}
|
||||
delete this.form.id
|
||||
this.dialogTitle = '设备数据模版新增'
|
||||
this.dialogFormVisible = true
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
|
||||
</style>
|
||||
466
src/views/govern/manage/basic/version.vue
Normal file
466
src/views/govern/manage/basic/version.vue
Normal file
@@ -0,0 +1,466 @@
|
||||
<template>
|
||||
<div class="page" >
|
||||
<el-form :inline="true" :model="formInline" class="demo-form-inline">
|
||||
<el-form-item label="装置型号:">
|
||||
<el-select
|
||||
clearable
|
||||
filterable
|
||||
v-model="formInline.devType"
|
||||
placeholder="请选择"
|
||||
style="width: 100%"
|
||||
@change="devTypeChange"
|
||||
>
|
||||
<el-option v-for="item in devTypeAllOptions" :key="item.value" :label="item.label"
|
||||
:value="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="日期:">
|
||||
<el-date-picker
|
||||
v-model="formInline.date"
|
||||
type="daterange"
|
||||
value-format="yyyy-MM-dd"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
@change="dateChange"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="onSearch" icon="el-icon-search">查询</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetFormInline" icon="el-icon-setting">重置</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item style="float: right">
|
||||
<el-button type="primary" icon="el-icon-plus" @click="add">新增版本</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-table
|
||||
stripe
|
||||
style="width: 100%"
|
||||
:data="tableData"
|
||||
border
|
||||
header-cell-class-name="table_header"
|
||||
highlight-current-row
|
||||
height="calc(100vh - 280px)"
|
||||
>
|
||||
|
||||
<el-table-column prop="devTypeName" label="装置型号" align="center"></el-table-column>
|
||||
<el-table-column prop="versionNo" label="版本号" align="center"></el-table-column>
|
||||
<el-table-column prop="versionAgreement" label="版本协议" align="center"></el-table-column>
|
||||
<el-table-column prop="versionDate" label="版本日期" align="center"></el-table-column>
|
||||
<!-- <el-table-column prop="updateBy" label="修改人员"> </el-table-column> -->
|
||||
<el-table-column prop="updateTime" label="归档日期" align="center"></el-table-column>
|
||||
<el-table-column prop="description" label="描述" show-overflow-tooltip align="center"></el-table-column>
|
||||
<el-table-column label="状态" align="center">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.status == 1 ? '启用' : '禁用' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="220px" fixed="right" align="center">
|
||||
<template slot-scope="scope">
|
||||
<!-- <div class="table-operation"> -->
|
||||
<el-button size="mini" type="primary" @click="edit(scope.row)" icon="el-icon-edit">编辑</el-button>
|
||||
<el-button icon="el-icon-warning" size="mini" type="danger" @click="del(scope.row)" v-if="scope.row.status == 1" >禁用
|
||||
</el-button>
|
||||
<el-button icon="el-icon-success" size="mini" type="success" @click="start(scope.row)" v-if="scope.row.status == 0">
|
||||
启用
|
||||
</el-button>
|
||||
<!-- </div> -->
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
background
|
||||
align="right"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="pageChange"
|
||||
:current-page="formInline.pageNum"
|
||||
:page-sizes="[20, 30, 40, 50, 100]"
|
||||
:page-size="formInline.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total"
|
||||
class="mt10"
|
||||
>
|
||||
</el-pagination>
|
||||
<el-dialog :title="dialogTitle" :visible.sync="dialogFormVisible" :close-on-click-modal="false">
|
||||
<el-form :model="form" :label-width="formLabelWidth">
|
||||
<el-form-item label="装置类型:">
|
||||
<el-select v-model="form.type" placeholder="请选择" style="width: 100%" @change="typeChange">
|
||||
<el-option v-for="item in typeOptions" :key="item.value" :label="item.label"
|
||||
:value="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="装置型号:">
|
||||
<el-select v-model="form.devType" placeholder="请选择" style="width: 100%" @change="devTypeChange">
|
||||
<el-option v-for="item in devTypeOptions" :key="item.value" :label="item.label"
|
||||
:value="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="版本号:">
|
||||
<el-input v-model="form.versionNo" autocomplete="off" placeholder="请输入"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="版本类型:">
|
||||
<el-input v-model="form.versionType" autocomplete="off" placeholder="填写特殊类型(不填默认通用类型)"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="版本协议:">
|
||||
<el-input v-model="form.versionAgreement" autocomplete="off" placeholder="请输入"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="版本日期:">
|
||||
<el-date-picker
|
||||
v-model="form.versionDate"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="选择日期时间"
|
||||
align="right"
|
||||
style="width: 100%"
|
||||
:picker-options="pickerOptions"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="描述:">
|
||||
<el-input v-model="form.description" autocomplete="off"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="CRC校验:">
|
||||
<el-input v-model="form.crcInfo" autocomplete="off"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="升级文件:">
|
||||
<el-upload
|
||||
class="upload-demo"
|
||||
action="123"
|
||||
:limit="1"
|
||||
:auto-upload="false"
|
||||
:on-change="fileChange"
|
||||
:on-exceed="fileExceed"
|
||||
:file-list="fileList"
|
||||
>
|
||||
<el-button size="small" type="primary">点击上传</el-button>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogFormVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="addEdData">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {queryEdDataPage, addEdData, auditEdData, queryCsDictTree, queryByCode, queryByid} from '@/api/app/setting.js'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
dialogFormVisible: false,
|
||||
dialogTitle: '新增字典数据',
|
||||
pickerOptions: {
|
||||
shortcuts: [
|
||||
{
|
||||
text: '今天',
|
||||
onClick(picker) {
|
||||
picker.$emit('pick', new Date())
|
||||
},
|
||||
},
|
||||
{
|
||||
text: '昨天',
|
||||
onClick(picker) {
|
||||
const date = new Date()
|
||||
date.setTime(date.getTime() - 3600 * 1000 * 24)
|
||||
picker.$emit('pick', date)
|
||||
},
|
||||
},
|
||||
{
|
||||
text: '一周前',
|
||||
onClick(picker) {
|
||||
const date = new Date()
|
||||
date.setTime(date.getTime() - 3600 * 1000 * 24 * 7)
|
||||
picker.$emit('pick', date)
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
form: {
|
||||
devType: null,
|
||||
devTypeName: null,
|
||||
// versionAgreement: null,
|
||||
// versionNo: null,
|
||||
// versionType: null,
|
||||
// crcInfo: null,
|
||||
// description: null,
|
||||
// versionDate: null,
|
||||
type: null,
|
||||
},
|
||||
file: '',
|
||||
fileList: [], // 回显
|
||||
formInline: {
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
versionStartDate: '',
|
||||
versionendDate: '',
|
||||
date: [],
|
||||
},
|
||||
formLabelWidth: '120px',
|
||||
tableData: [],
|
||||
total: 0,
|
||||
devTypeOptions: [],
|
||||
devTypeAllOptions: [],
|
||||
typeOptions: [],
|
||||
tabHeight: 'calc(100vh - 255px)',
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
vth() {
|
||||
return window.sessionStorage.getItem("appheight") -145;
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.onSearch()
|
||||
|
||||
queryByCode('Direct_Connected_Device').then((res) => {
|
||||
queryCsDictTree(res.data.id).then((res) => {
|
||||
this.typeOptions = res.data.map((item) => {
|
||||
return {
|
||||
value: item.id,
|
||||
label: item.name,
|
||||
}
|
||||
})
|
||||
})
|
||||
queryByid(res.data.id).then((res) => {
|
||||
this.devTypeAllOptions = res.data.map((item) => {
|
||||
return {
|
||||
value: item.id,
|
||||
label: item.name,
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
|
||||
typeChange() {
|
||||
this.form.devType = null
|
||||
this.form.devTypeName = null
|
||||
queryCsDictTree(this.form.type).then((res) => {
|
||||
this.devTypeOptions = res.data.map((item) => {
|
||||
return {
|
||||
value: item.id,
|
||||
label: item.name,
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
devTypeChange(e) {
|
||||
console.log(e)
|
||||
this.form.devTypeName = this.devTypeOptions.filter((item) => item.value == e)[0].label
|
||||
},
|
||||
fileChange(e) {
|
||||
console.log('fileChange!')
|
||||
console.log(e)
|
||||
this.file = e.raw
|
||||
},
|
||||
fileExceed(e) {
|
||||
console.log('fileExceed!')
|
||||
console.log(e)
|
||||
this.$message({
|
||||
message: '最多只能上传一个文件,如若替换请先删除',
|
||||
type: 'error',
|
||||
})
|
||||
},
|
||||
addEdData() {
|
||||
let form = new FormData()
|
||||
for (let key in this.form) {
|
||||
if (!this.form[key]) {
|
||||
this.$message({
|
||||
message: '请完善表单信息',
|
||||
type: 'error',
|
||||
})
|
||||
return
|
||||
}
|
||||
form.append(key, this.form[key])
|
||||
}
|
||||
if (this.form.id) {
|
||||
if (this.file) {
|
||||
form.append('file', this.file)
|
||||
}
|
||||
auditEdData(form).then((res) => {
|
||||
console.log(res)
|
||||
if (res.code == 'A0000') {
|
||||
this.onSearch()
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: '修改成功!',
|
||||
})
|
||||
this.dialogFormVisible = false
|
||||
for (let key in this.form) {
|
||||
this.form[key] = ''
|
||||
}
|
||||
delete this.form.id
|
||||
this.fileList = []
|
||||
this.file = ''
|
||||
}
|
||||
})
|
||||
} else {
|
||||
if (!this.file) {
|
||||
this.$message({
|
||||
message: '请上传升级文件',
|
||||
type: 'error',
|
||||
})
|
||||
return
|
||||
}
|
||||
form.append('file', this.file)
|
||||
addEdData(form).then((res) => {
|
||||
console.log(res)
|
||||
if (res.code == 'A0000') {
|
||||
this.onSearch()
|
||||
this.$message({
|
||||
message: '添加成功',
|
||||
type: 'success',
|
||||
})
|
||||
this.dialogFormVisible = false
|
||||
for (let key in this.form) {
|
||||
this.form[key] = ''
|
||||
}
|
||||
this.file = ''
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
onSearch() {
|
||||
console.log('submit!')
|
||||
queryEdDataPage(this.formInline).then((res) => {
|
||||
console.log(res)
|
||||
this.tableData = res.data.records
|
||||
this.total = res.data.total
|
||||
})
|
||||
},
|
||||
resetFormInline() {
|
||||
this.formInline.devType = ''
|
||||
this.formInline.versionendDate = ''
|
||||
this.formInline.versionStartDate = ''
|
||||
this.formInline.date = []
|
||||
},
|
||||
pageChange(e) {
|
||||
console.log('pageChange!')
|
||||
console.log(e)
|
||||
this.formInline.pageNum = e
|
||||
this.onSearch()
|
||||
},
|
||||
handleSizeChange(val) {
|
||||
// console.log(`每页 ${val} 条`);
|
||||
this.formInline.pageNum = 1
|
||||
this.formInline.pageSize = val
|
||||
this.onSearch()
|
||||
},
|
||||
dateChange(e) {
|
||||
console.log(e)
|
||||
if (e && e.length > 0) {
|
||||
this.formInline.versionStartDate = e[0]
|
||||
this.formInline.versionendDate = e[1]
|
||||
} else {
|
||||
this.formInline.versionStartDate = ''
|
||||
this.formInline.versionendDate = ''
|
||||
}
|
||||
},
|
||||
start(item) {
|
||||
console.log(item)
|
||||
this.confirmPassWord().then(() => {
|
||||
this.$confirm('确定启用吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
}).then(() => {
|
||||
auditEdData({
|
||||
id: item.id,
|
||||
status: 1,
|
||||
}).then((res) => {
|
||||
console.log(res)
|
||||
if (res.code == 'A0000') {
|
||||
this.onSearch()
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: '启用成功!',
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
},
|
||||
del(item) {
|
||||
console.log(item)
|
||||
this.confirmPassWord().then(() => {
|
||||
this.$confirm('确定禁用吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
}).then(() => {
|
||||
auditEdData({
|
||||
id: item.id,
|
||||
status: 0,
|
||||
}).then((res) => {
|
||||
console.log(res)
|
||||
if (res.code == 'A0000') {
|
||||
this.onSearch()
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: '禁用成功!',
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
},
|
||||
add() {
|
||||
this.confirmPassWord().then(() => {
|
||||
this.dialogTitle = '新增版本'
|
||||
this.dialogFormVisible = true
|
||||
})
|
||||
},
|
||||
confirmPassWord() {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (localStorage.getItem('password')) {
|
||||
resolve()
|
||||
} else {
|
||||
this.$prompt('密码确认', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
inputType: 'password',
|
||||
}).then(({value}) => {
|
||||
localStorage.setItem('password', value)
|
||||
resolve()
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
},
|
||||
edit(item) {
|
||||
this.confirmPassWord().then(() => {
|
||||
for (let key in this.form) {
|
||||
this.form[key] = item[key]
|
||||
}
|
||||
this.fileList = [
|
||||
{
|
||||
name: item.filePath,
|
||||
url: item.filePath,
|
||||
},
|
||||
]
|
||||
this.form.id = item.id
|
||||
console.log(this.form)
|
||||
this.dialogTitle = '修改终端版本'
|
||||
this.dialogFormVisible = true
|
||||
})
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.dictionary {
|
||||
.el-input {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
85
src/views/govern/manage/engineering.vue
Normal file
85
src/views/govern/manage/engineering.vue
Normal file
@@ -0,0 +1,85 @@
|
||||
<template>
|
||||
<Page>
|
||||
<div class="engineering">
|
||||
<el-table
|
||||
stripe
|
||||
style="width: 100%"
|
||||
:data="tableData"
|
||||
height="calc(100vh - 136px)"
|
||||
border
|
||||
highlight-current-row
|
||||
v-loading="loading"
|
||||
:header-cell-style="{
|
||||
//background:'#5E95E8',
|
||||
//color:'#FFFFFF',
|
||||
height: '25px',
|
||||
padding: '0px'
|
||||
}"
|
||||
header-cell-class-name="table_header"
|
||||
:row-style="{ height: '28px' }"
|
||||
:cell-style="{ padding: '0px' }"
|
||||
row-key="id"
|
||||
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
|
||||
>
|
||||
<el-table-column align="left" prop="name" label="名称"></el-table-column>
|
||||
<el-table-column align="center" prop="area" label="区域">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.area || '/' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="remark" label="备注">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.remark || '/' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column align="center" label="操作" width="260">-->
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- <div class="table-operation">-->
|
||||
<!-- <el-button size="mini" type="primary" @click="edit(scope.row)" icon="el-icon-edit" >编辑</el-button>-->
|
||||
<!-- <el-button size="mini" type="primary" @click="jumpProject(scope.row)" icon="el-icon-search">项目</el-button>-->
|
||||
<!-- <el-button size="mini" type="danger" @click="del(scope.row)" icon="el-icon-delete">删除</el-button> -->
|
||||
<!-- </div>-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
</el-table>
|
||||
</div>
|
||||
</Page>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { engineeringTree } from '@/api/app/engineering'
|
||||
|
||||
export default {
|
||||
name: 'GovernManageEngineering',
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
total: 0,
|
||||
tableData: [],
|
||||
tabHeight: 'calc(100vh - 116px)'
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
vth() {
|
||||
return window.sessionStorage.getItem('appheight') - 10
|
||||
}
|
||||
},
|
||||
|
||||
created() {
|
||||
this.search()
|
||||
},
|
||||
methods: {
|
||||
search() {
|
||||
engineeringTree().then(res => {
|
||||
console.warn(res)
|
||||
this.tableData = res.data
|
||||
this.loading = false
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.project {
|
||||
}
|
||||
</style>
|
||||
763
src/views/govern/manage/factory.vue
Normal file
763
src/views/govern/manage/factory.vue
Normal file
@@ -0,0 +1,763 @@
|
||||
<template>
|
||||
<Page>
|
||||
<el-form :inline="true" :model="formInline" class="demo-form-inline">
|
||||
<el-form-item label="设备类型:">
|
||||
<el-select
|
||||
v-model="formInline.devType"
|
||||
placeholder="请选择设备类型"
|
||||
style="width: 100%"
|
||||
@change="devTypeChange"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="item in devTypeOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="设备型号:">
|
||||
<el-select v-model="formInline.devModel" placeholder="请选择设备型号" style="width: 100%" clearable>
|
||||
<el-option
|
||||
v-for="item in devModelOptionsFilter"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="通讯协议:">
|
||||
<el-select
|
||||
v-model="formInline.devAccessMethod"
|
||||
placeholder="请选择通讯协议"
|
||||
style="width: 100%"
|
||||
clearable
|
||||
@change="devModelChange"
|
||||
>
|
||||
<el-option label="MQTT" value="mqtt"></el-option>
|
||||
<el-option label="CLD" value="cloud"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态:">
|
||||
<el-select
|
||||
v-model="formInline.status"
|
||||
placeholder="请选择状态"
|
||||
style="width: 100%"
|
||||
clearable
|
||||
@change="devModelChange"
|
||||
>
|
||||
<el-option label="未注册" :value="1"></el-option>
|
||||
<el-option label="注册" :value="2"></el-option>
|
||||
<el-option label="接入" :value="3"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="search" icon="el-icon-search">查询</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetFormInline" icon="el-icon-setting">重置</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item style="display: flex; float: right">
|
||||
<el-button type="primary" @click="downLoadFile" icon="el-icon-download">模版下载</el-button>
|
||||
<el-upload
|
||||
style="display: inline-block"
|
||||
action=""
|
||||
accept=".xlsx"
|
||||
class="upload-demo"
|
||||
:show-file-list="false"
|
||||
:auto-upload="false"
|
||||
:on-change="bulkImport"
|
||||
>
|
||||
<el-button type="primary" icon="el-icon-tickets">批量导入</el-button>
|
||||
</el-upload>
|
||||
<el-button type="primary" @click="add" icon="el-icon-plus">新增设备</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-table
|
||||
stripe
|
||||
style="width: 100%"
|
||||
:data="tableData"
|
||||
height="calc(100vh - 224px)"
|
||||
border
|
||||
v-loading="loading"
|
||||
highlight-current-row
|
||||
header-cell-class-name="table_header"
|
||||
>
|
||||
<el-table-column align="center" prop="name" label="设备名称"></el-table-column>
|
||||
<el-table-column align="center" prop="devType" label="设备类型">
|
||||
<template slot-scope="scope">
|
||||
{{
|
||||
devTypeOptions.filter(item => item.value == scope.row.devType)[0] &&
|
||||
devTypeOptions.filter(item => item.value == scope.row.devType)[0].label
|
||||
}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="devModel" label="设备型号">
|
||||
<template slot-scope="scope">
|
||||
{{
|
||||
devModelOptions.filter(item => item.value == scope.row.devModel)[0] &&
|
||||
devModelOptions.filter(item => item.value == scope.row.devModel)[0].label
|
||||
}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="devAccessMethod" label="通讯协议">
|
||||
<template slot-scope="scope">
|
||||
{{
|
||||
scope.row.devAccessMethod === 'MQTT'
|
||||
? 'MQTT'
|
||||
: scope.row.devAccessMethod === 'cloud'
|
||||
? 'CLD'
|
||||
: scope.row.devAccessMethod
|
||||
}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="createTime" label="录入时间" min-width="150"></el-table-column>
|
||||
<!-- <el-table-column align="center" prop="programVersion" label="程序版本" min-width="130">-->
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- {{-->
|
||||
<!-- versionOptions.filter((item) => item.value == scope.row.programVersion)[0] &&-->
|
||||
<!-- versionOptions.filter((item) => item.value == scope.row.programVersion)[0].label-->
|
||||
<!-- }}-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
<el-table-column align="center" prop="ndid" label="网络设备ID" min-width="120"></el-table-column>
|
||||
<el-table-column align="center" prop="status" label="状态" min-width="70">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.status == 1 ? '未注册' : scope.row.status == 2 ? '注册' : '接入' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center" label="操作" min-width="340">
|
||||
<template slot-scope="scope">
|
||||
<!-- <div class="table-operation"> -->
|
||||
<el-button size="mini" type="primary" @click="edit(scope.row)" icon="el-icon-edit">编辑</el-button>
|
||||
<el-button size="mini" type="primary" @click="qrCode(scope.row)" icon="el-icon-s-grid">
|
||||
二维码
|
||||
</el-button>
|
||||
<el-button size="mini" type="primary" @click="reset(scope.row.ndid)" icon="el-icon-setting">
|
||||
出厂恢复
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="danger"
|
||||
@click="deleteEquipmentDelivery(scope.row.id)"
|
||||
icon="el-icon-delete"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
|
||||
<!-- </div> -->
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
background
|
||||
align="right"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="pageChange"
|
||||
:current-page="formInline.pageNum"
|
||||
:page-sizes="[20, 30, 40, 50, 100]"
|
||||
:page-size="formInline.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total"
|
||||
class="mt10"
|
||||
></el-pagination>
|
||||
<el-dialog :title="dialogTitle" :visible.sync="dialogFormVisible" width="30%" :before-close="closeDialog">
|
||||
<el-form :model="form" :label-width="formLabelWidth" :rules="rules" ref="form">
|
||||
<el-form-item label="设备名称:" prop="name">
|
||||
<el-input
|
||||
v-model="form.name"
|
||||
autocomplete="off"
|
||||
clearable
|
||||
placeholder="请输入(项目名称+设备名称)"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="网络设备ID:" prop="ndid" class="top">
|
||||
<el-input v-model="form.ndid" autocomplete="off" placeholder="请输入"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="设备类型:" prop="devType" class="top">
|
||||
<el-select
|
||||
v-model="form.devType"
|
||||
placeholder="请选择"
|
||||
style="width: 100%"
|
||||
@change="formDevTypeChange"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="item in devTypeOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="设备型号:" prop="devModel" class="top">
|
||||
<el-select
|
||||
v-model="form.devModel"
|
||||
placeholder="请选择"
|
||||
style="width: 100%"
|
||||
clearable
|
||||
@change="formDevModelChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in formDevModelOptionsFilter"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="通讯协议:" prop="devAccessMethod" class="top">
|
||||
<el-select v-model="form.devAccessMethod" placeholder="请选择" style="width: 100%" clearable>
|
||||
<el-option label="MQTT" value="MQTT"></el-option>
|
||||
<el-option label="CLD" value="cloud"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="程序版本:" prop="programVersion">-->
|
||||
<!-- <el-select v-model="form.programVersion" placeholder="请选择" style="width: 100%">-->
|
||||
<!-- <el-option v-for="item in versionOptionsFilter" :key="item.value" :label="item.label"-->
|
||||
<!-- :value="item.value">-->
|
||||
<!-- </el-option>-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="MAC地址:" prop="mac">-->
|
||||
<!-- <el-input v-model="form.mac" autocomplete="off" placeholder="请输入"></el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="调试人员:" prop="debugPerson">-->
|
||||
<!-- <el-input v-model="form.debugPerson" autocomplete="off" placeholder="请输入"></el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="设备出厂日期:" prop="producteTime">-->
|
||||
<!-- <el-date-picker value-format="yyyy-MM-dd" v-model="form.producteTime" type="date" style="width: 100%"-->
|
||||
<!-- placeholder="选择日期时间">-->
|
||||
<!-- </el-date-picker>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="检修日期:" prop="checkTime">-->
|
||||
<!-- <el-date-picker value-format="yyyy-MM-dd" v-model="form.checkTime" type="date" style="width: 100%"-->
|
||||
<!-- placeholder="选择日期时间">-->
|
||||
<!-- </el-date-picker>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="调试日期:" prop="debugTime">-->
|
||||
<!-- <el-date-picker value-format="yyyy-MM-dd" v-model="form.debugTime" type="date" style="width: 100%"-->
|
||||
<!-- placeholder="选择日期时间">-->
|
||||
<!-- </el-date-picker>-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="合同号:" prop="cntractNo" class="top">
|
||||
<el-input v-model="form.cntractNo" autocomplete="off" placeholder="请输入"></el-input>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="营销经理:" prop="salesManager">-->
|
||||
<!-- <el-input v-model="form.salesManager" autocomplete="off" placeholder="请输入"></el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="closeDialog">取 消</el-button>
|
||||
<el-button type="primary" @click="onSubmit">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<div class="qrcode-label">
|
||||
<div class="qrcode-label-title">{{ deivce.mac }}</div>
|
||||
<img class="qrcode-label-img" alt="二维码加载失败" :src="deivce.qrPath" />
|
||||
</div>
|
||||
</Page>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
getDeviceLeavesFactoryList,
|
||||
addEquipmentDelivery,
|
||||
deleteEquipmentDelivery,
|
||||
editEquipmentDelivery,
|
||||
uploadTopo,
|
||||
batchImportDevice,
|
||||
resetEquipmentDelivery
|
||||
} from '@/api/app/device'
|
||||
import { queryByCode, queryCsDictTree, queryByid, queryEdDataPage } from '@/api/app/setting'
|
||||
import html2canvas from 'html2canvas'
|
||||
|
||||
export default {
|
||||
name: 'GovernManageFactory',
|
||||
data() {
|
||||
return {
|
||||
loading: true,
|
||||
dialogFormVisible: false,
|
||||
dialogTitle: '新增设备',
|
||||
form: {
|
||||
// checkTime: '',
|
||||
cntractNo: '',
|
||||
// debugPerson: '',
|
||||
// debugTime: '',
|
||||
devAccessMethod: 'mqtt',
|
||||
devModel: '',
|
||||
devType: '',
|
||||
// mac: '',
|
||||
name: '',
|
||||
ndid: ''
|
||||
// producteTime: '',
|
||||
// programVersion: '',
|
||||
// salesManager: '',
|
||||
},
|
||||
deivce: {},
|
||||
dialogImageUrl: '',
|
||||
dialogVisible: false,
|
||||
formLabelWidth: '120px',
|
||||
formInline: {
|
||||
devAccessMethod: '',
|
||||
devModel: '',
|
||||
devType: '',
|
||||
orderBy: '',
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
searchBeginTime: '',
|
||||
searchEndTime: '',
|
||||
searchState: '',
|
||||
searchValue: '',
|
||||
sortBy: '',
|
||||
status: ''
|
||||
},
|
||||
// 设备类型
|
||||
devTypeOptions: [],
|
||||
// 设备型号
|
||||
devModelOptions: [],
|
||||
// 程序版本
|
||||
versionOptions: [],
|
||||
total: 0,
|
||||
tableData: [],
|
||||
engineeringList: [],
|
||||
tabHeight: 'calc(100vh - 205px)',
|
||||
rules: {
|
||||
name: [
|
||||
{ required: true, message: '设备名不能为空', trigger: 'blur' }
|
||||
// {
|
||||
// pattern: /[^\u4E00-\u9FA5]/,
|
||||
// message: "请输入中文字符",
|
||||
// trigger: "blur",
|
||||
// },
|
||||
],
|
||||
ndid: [{ required: true, message: '网络设备id不能为空', trigger: 'blur' }],
|
||||
devType: [{ required: true, message: '设备类型不能为空', trigger: 'blur' }],
|
||||
devModel: [{ required: true, message: '设备型号不能为空', trigger: 'blur' }],
|
||||
devAccessMethod: [{ required: true, message: '接入方式不能为空', trigger: 'blur' }],
|
||||
// programVersion: [{ required: true, message: '程序版本不能为空', trigger: 'blur' }],
|
||||
mac: [
|
||||
{
|
||||
required: true,
|
||||
trigger: 'blur',
|
||||
validator: (rule, value, callback) => {
|
||||
if (value) {
|
||||
// MAC地址正则表达式
|
||||
let reg = /^([0-9a-fA-F]{2})(([/\s:-][0-9a-fA-F]{2}){5})$/
|
||||
// IP4地址正则表达式
|
||||
let reg2 =
|
||||
/^((([0-9]|([1-9][0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3})([0-9]|([1-9][0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))$/
|
||||
if (reg.test(this.form.mac) || reg2.test(this.form.mac)) {
|
||||
callback()
|
||||
} else {
|
||||
callback(new Error('请输入正确的MAC地址'))
|
||||
}
|
||||
} else {
|
||||
callback(new Error('请输入正确的MAC地址'))
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
debugPerson: [{ required: true, message: '调试人员不能为空', trigger: 'blur' }],
|
||||
producteTime: [
|
||||
{ required: false, message: '设备出场日期不能为空', trigger: 'blur' }
|
||||
// {
|
||||
// type: "email",
|
||||
// message: "'请输入正确的邮箱地址",
|
||||
// trigger: ["blur", "change"],
|
||||
// },
|
||||
],
|
||||
checkTime: [
|
||||
{ required: false, message: '检修日期不能为空', trigger: 'blur' }
|
||||
// {
|
||||
// pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
|
||||
// message: "请输入正确的手机号码",
|
||||
// trigger: "blur",
|
||||
// },
|
||||
],
|
||||
debugTime: [{ required: true, message: '调试日期不能为空', trigger: 'blur' }],
|
||||
cntractNo: [
|
||||
{ required: true, message: '合同号不能为空', trigger: 'blur' }
|
||||
// {
|
||||
// required: true,
|
||||
// validator: (rule, value, callback) => {
|
||||
// let regexp =
|
||||
// /^((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}$/;
|
||||
// let isCorrect = regexp.test(value);
|
||||
// if (value == "") {
|
||||
// return callback(new Error("请输入IP地址"));
|
||||
// } else if (!isCorrect) {
|
||||
// callback(new Error("请输入正确的IP地址"));
|
||||
// } else {
|
||||
// callback();
|
||||
// }
|
||||
// },
|
||||
// trigger: "blur",
|
||||
// },
|
||||
],
|
||||
salesManager: [
|
||||
{ required: true, message: '销售经理不能为空', trigger: 'blur' }
|
||||
// {
|
||||
// required: true,
|
||||
// validator: (rule, value, callback) => {
|
||||
// let regexp =
|
||||
// /^((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}$/;
|
||||
// let isCorrect = regexp.test(value);
|
||||
// if (value == "") {
|
||||
// return callback(new Error("请输入IP地址"));
|
||||
// } else if (!isCorrect) {
|
||||
// callback(new Error("请输入正确的IP地址"));
|
||||
// } else {
|
||||
// callback();
|
||||
// }
|
||||
// },
|
||||
// trigger: "blur",
|
||||
// },
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
vth() {
|
||||
return window.sessionStorage.getItem('appheight') - 95
|
||||
},
|
||||
|
||||
devModelOptionsFilter() {
|
||||
return this.devModelOptions.filter(item => {
|
||||
if (this.formInline.devType) {
|
||||
return item.pid == this.formInline.devType
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
})
|
||||
},
|
||||
formDevModelOptionsFilter() {
|
||||
return this.devModelOptions.filter(item => {
|
||||
if (this.form.devType) {
|
||||
return item.pid == this.form.devType
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
})
|
||||
},
|
||||
versionOptionsFilter() {
|
||||
return this.versionOptions.filter(item => {
|
||||
if (this.form.devModel) {
|
||||
return item.devType == this.form.devModel
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.search()
|
||||
queryByCode('Device_Type').then(res => {
|
||||
queryCsDictTree(res.data.id).then(res => {
|
||||
this.devTypeOptions = res.data.map(item => {
|
||||
return {
|
||||
value: item.id,
|
||||
label: item.name,
|
||||
...item
|
||||
}
|
||||
})
|
||||
})
|
||||
queryByid(res.data.id).then(res => {
|
||||
this.devModelOptions = res.data.map(item => {
|
||||
return {
|
||||
value: item.id,
|
||||
label: item.name,
|
||||
...item
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
queryEdDataPage({
|
||||
pageNum: 1,
|
||||
pageSize: 1000
|
||||
}).then(res => {
|
||||
console.log(res)
|
||||
this.versionOptions = res.data.records.map(item => {
|
||||
return {
|
||||
value: item.id,
|
||||
label: item.versionNo,
|
||||
...item
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
closeDialog() {
|
||||
this.resetForm()
|
||||
this.dialogFormVisible = false
|
||||
},
|
||||
// 表单重置
|
||||
resetForm() {
|
||||
if (this.$refs['form']) {
|
||||
this.$refs['form'].resetFields()
|
||||
}
|
||||
},
|
||||
|
||||
downLoadFile() {
|
||||
window.open(window.location.origin + '/api/cs-device-boot/EquipmentDelivery/getExcelTemplate')
|
||||
},
|
||||
bulkImport(e) {
|
||||
console.warn(e)
|
||||
batchImportDevice(e.raw).then(res => {
|
||||
console.log(res)
|
||||
if (res.type === 'application/json') {
|
||||
const reader = new FileReader()
|
||||
reader.readAsText(res)
|
||||
reader.onload = e => {
|
||||
console.log(e)
|
||||
let data = JSON.parse(e.target.result)
|
||||
if (data.code === 'A0000') {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: data.message
|
||||
})
|
||||
this.search()
|
||||
} else {
|
||||
this.$message({
|
||||
type: 'error',
|
||||
message: data.message
|
||||
})
|
||||
}
|
||||
}
|
||||
} else {
|
||||
let url = window.URL.createObjectURL(res)
|
||||
let link = document.createElement('a')
|
||||
link.style.display = 'none'
|
||||
link.href = url
|
||||
link.setAttribute('download', '导入失败.xlsx')
|
||||
document.body.appendChild(link)
|
||||
link.click()
|
||||
document.body.removeChild(link)
|
||||
}
|
||||
})
|
||||
},
|
||||
qrCode(item) {
|
||||
this.deivce = item
|
||||
this.deivce.qrPath = localStorage.getItem('STATIC_URL') + this.deivce.qrPath
|
||||
this.$nextTick(() => {
|
||||
html2canvas(document.querySelector('.qrcode-label'), {
|
||||
useCORS: true
|
||||
}).then(canvas => {
|
||||
let url = canvas.toDataURL('image/png')
|
||||
// 下载图片
|
||||
let a = document.createElement('a')
|
||||
let event = new MouseEvent('click')
|
||||
a.href = url
|
||||
a.download = item.mac + '.png'
|
||||
a.dispatchEvent(event)
|
||||
})
|
||||
})
|
||||
},
|
||||
deleteEquipmentDelivery(id) {
|
||||
this.$confirm('确定删除该设备吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
deleteEquipmentDelivery(id).then(res => {
|
||||
console.log(res)
|
||||
if (res.code === 'A0000') {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: '删除成功!'
|
||||
})
|
||||
this.search()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
reset(id) {
|
||||
this.$confirm('确定该设备恢复出厂吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
resetEquipmentDelivery(id).then(res => {
|
||||
console.log(res)
|
||||
if (res.code === 'A0000') {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: '恢复成功!'
|
||||
})
|
||||
this.search()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
devTypeChange(e) {
|
||||
console.log(e)
|
||||
if (!e) {
|
||||
return
|
||||
}
|
||||
this.formInline.devModel = ''
|
||||
},
|
||||
formDevTypeChange(e) {
|
||||
console.log(e)
|
||||
if (!e) {
|
||||
return
|
||||
}
|
||||
this.form.devModel = ''
|
||||
},
|
||||
formDevModelChange(e) {
|
||||
console.log(e)
|
||||
if (!e) {
|
||||
return
|
||||
}
|
||||
// this.form.programVersion = ''
|
||||
},
|
||||
devModelChange(e) {
|
||||
console.log(e)
|
||||
},
|
||||
imageChange(e) {
|
||||
console.log(e)
|
||||
this.form.files.push(e)
|
||||
},
|
||||
handleRemove(file, fileList) {
|
||||
console.log(file, fileList)
|
||||
if (file.id) {
|
||||
delAppTopologyDiagram(file.id).then(res => {
|
||||
console.log(res)
|
||||
})
|
||||
}
|
||||
this.form.files = fileList
|
||||
},
|
||||
handlePictureCardPreview(file) {
|
||||
this.dialogImageUrl = file.url
|
||||
this.dialogVisible = true
|
||||
},
|
||||
pageChange(e) {
|
||||
console.log('pageChange!')
|
||||
console.log(e)
|
||||
this.formInline.pageNum = e
|
||||
this.search()
|
||||
},
|
||||
handleSizeChange(val) {
|
||||
console.log(`每页 ${val} 条`)
|
||||
this.formInline.pageNum = 1
|
||||
this.formInline.pageSize = val
|
||||
this.search()
|
||||
},
|
||||
search() {
|
||||
this.loading = true
|
||||
getDeviceLeavesFactoryList(this.formInline).then(res => {
|
||||
console.warn(res)
|
||||
this.tableData = res.data.records
|
||||
this.total = res.data.total
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
resetFormInline() {
|
||||
for (let key in this.formInline) {
|
||||
if (key !== 'pageNum' && key !== 'pageSize') {
|
||||
this.formInline[key] = ''
|
||||
}
|
||||
}
|
||||
},
|
||||
reload() {
|
||||
for (let key in this.formInline) {
|
||||
this.formInline[key] = ''
|
||||
}
|
||||
this.formInline.pageNum = 1
|
||||
this.formInline.pageSize = 20
|
||||
this.search()
|
||||
},
|
||||
onSubmit() {
|
||||
console.log(this.form)
|
||||
for (let key in this.form) {
|
||||
if (this.form[key] === '') {
|
||||
this.$message.error('请填写完整信息')
|
||||
return
|
||||
}
|
||||
}
|
||||
if (this.dialogTitle == '新增设备') {
|
||||
addEquipmentDelivery(this.form).then(res => {
|
||||
console.log(res)
|
||||
if (res.code === 'A0000') {
|
||||
this.$message({
|
||||
message: '新增成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.dialogFormVisible = false
|
||||
this.reload()
|
||||
}
|
||||
})
|
||||
} else {
|
||||
editEquipmentDelivery(this.form).then(res => {
|
||||
if (res.code === 'A0000') {
|
||||
this.$message({
|
||||
message: '修改成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.dialogFormVisible = false
|
||||
this.reload()
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
add() {
|
||||
for (let key in this.form) {
|
||||
if (key == 'files') {
|
||||
this.form[key] = []
|
||||
continue
|
||||
}
|
||||
this.form[key] = ''
|
||||
}
|
||||
delete this.form.id
|
||||
this.dialogTitle = '新增设备'
|
||||
this.dialogFormVisible = true
|
||||
},
|
||||
|
||||
edit(item) {
|
||||
console.log(item)
|
||||
this.dialogTitle = '编辑设备'
|
||||
for (let key in this.form) {
|
||||
this.form[key] = item[key]
|
||||
}
|
||||
this.form.id = item.id
|
||||
this.dialogFormVisible = true
|
||||
},
|
||||
dialogClose() {
|
||||
this.form.id = ''
|
||||
this.form.name = ''
|
||||
this.dialogFormVisible = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@import url('../../../styles/comStyle.less');
|
||||
</style>
|
||||
<style lang="scss">
|
||||
.qrcode-label {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
z-index: -99;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 180px;
|
||||
height: 180px;
|
||||
padding: 10px;
|
||||
background: #fff;
|
||||
flex-direction: column;
|
||||
|
||||
.qrcode-label-title {
|
||||
margin-bottom: 10px;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.qrcode-label-img {
|
||||
width: 140px;
|
||||
height: 140px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
157
src/views/govern/manage/feedback.vue
Normal file
157
src/views/govern/manage/feedback.vue
Normal file
@@ -0,0 +1,157 @@
|
||||
<template>
|
||||
<Page>
|
||||
<el-form :inline="true" :model="formInline" class="demo-form-inline">
|
||||
<el-form-item label="关键词">
|
||||
<el-input v-model="formInline.searchValue" placeholder="请输入关键词" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<timepicker ref="timepk" :interval="interval" :dataTree="dataTree"></timepicker>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="queryData" icon="el-icon-search">查询</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-table
|
||||
stripe
|
||||
highlight-current-row
|
||||
header-cell-class-name="table_header"
|
||||
border
|
||||
style="width: 100%"
|
||||
:data="tableData"
|
||||
height="calc(100vh - 224px)"
|
||||
>
|
||||
<el-table-column prop="title" label="问题标题" align="center"></el-table-column>
|
||||
<el-table-column prop="description" label="问题描述" align="center"></el-table-column>
|
||||
<el-table-column prop="status" label="问题状态" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.status == 2">处理中</el-tag>
|
||||
<el-tag v-if="scope.row.status == 0" type="success">已解决</el-tag>
|
||||
<el-tag v-if="scope.row.status == 1" type="warning">待处理</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="createTime" label="发布时间" align="center"></el-table-column>
|
||||
<el-table-column label="操作" width="240px" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="primary"
|
||||
icon="el-icon-finished"
|
||||
@click="solve(scope.row)"
|
||||
v-if="scope.row.status != 0"
|
||||
>
|
||||
解决
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
background
|
||||
align="right"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="pageChange"
|
||||
:current-page="formInline.pageNum"
|
||||
:page-sizes="[20, 30, 40, 50, 100]"
|
||||
:page-size="formInline.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total"
|
||||
class="mt10"
|
||||
></el-pagination>
|
||||
</Page>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { queryFeedBackPage, updateFeedBackStatus } from '@/api/app/manage'
|
||||
import timepicker from '@/views/components/TimePicker/index4'
|
||||
|
||||
export default {
|
||||
name: 'GovernLogOperation',
|
||||
components: {
|
||||
timepicker
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
interval: 3,
|
||||
total: 0,
|
||||
formInline: {
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
searchValue: ''
|
||||
},
|
||||
loading: false,
|
||||
tableData: []
|
||||
//tabHeight: 'calc(100vh - 255px)',
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
vth() {
|
||||
return window.sessionStorage.getItem('appheight') - 101
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.queryData()
|
||||
},
|
||||
methods: {
|
||||
solve(row) {
|
||||
console.log(row)
|
||||
this.$confirm('该问题是否已解决?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
updateFeedBackStatus({
|
||||
id: row.id,
|
||||
status: 0
|
||||
}).then(res => {
|
||||
console.log(res)
|
||||
if (res.code == 'A0000') {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: '操作成功!'
|
||||
})
|
||||
this.queryData()
|
||||
} else {
|
||||
this.$message({
|
||||
type: 'error',
|
||||
message: '操作失败!'
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
queryData() {
|
||||
this.loading = true
|
||||
this.formInline.searchBeginTime = this.$refs.timepk.timeValue[0]
|
||||
this.formInline.searchEndTime = this.$refs.timepk.timeValue[1]
|
||||
queryFeedBackPage(this.formInline).then(res => {
|
||||
console.log(res)
|
||||
if (res.code == 'A0000') {
|
||||
this.total = res.data.total
|
||||
this.tableData = res.data.records
|
||||
}
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
onSubmit() {
|
||||
console.log('submit!')
|
||||
},
|
||||
pageChange(e) {
|
||||
console.log('pageChange!')
|
||||
console.log(e)
|
||||
this.formInline.pageNum = e
|
||||
this.queryData()
|
||||
},
|
||||
handleSizeChange(val) {
|
||||
console.log(`每页 ${val} 条`)
|
||||
this.formInline.pageNum = 1
|
||||
this.formInline.pageSize = val
|
||||
this.queryData()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
::v-deep.el-table--enable-row-hover .el-table__body tr:hover > td {
|
||||
color: #000 !important;
|
||||
background-color: $hoverf !important;
|
||||
}
|
||||
</style>
|
||||
58
src/views/govern/manage/referral.vue
Normal file
58
src/views/govern/manage/referral.vue
Normal file
@@ -0,0 +1,58 @@
|
||||
<template>
|
||||
<Page :loading="false">
|
||||
<div >
|
||||
<el-form :inline="true" class="demo-form-inline">
|
||||
<el-form-item style="float: right;">
|
||||
<el-button type="primary" @click="refreshReferralCode">刷新推荐码</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-table
|
||||
stripe :cell-style="{ textAlign: 'center' }"
|
||||
:header-cell-style="{ textAlign: 'center' }"
|
||||
:data="tableData"
|
||||
height="calc(100vh - 185px)"
|
||||
border
|
||||
header-cell-class-name="table_header"
|
||||
algin="center"
|
||||
style="width: 100%;">
|
||||
<el-table-column
|
||||
prop="roleName"
|
||||
label="角色名称"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="roleReferralCode"
|
||||
label="推荐码"
|
||||
>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</page>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {findReferralCode, refreshReferralCode} from '@/api/app/setting'
|
||||
|
||||
export default {
|
||||
name: 'GovernManageReferral',
|
||||
data() {
|
||||
return {
|
||||
tableData: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
findReferralCode().then(res => {
|
||||
console.log(res)
|
||||
this.tableData = res.data
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
refreshReferralCode() {
|
||||
refreshReferralCode().then(res => {
|
||||
console.log(res)
|
||||
this.tableData = res.data
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
Reference in New Issue
Block a user