From 3bb3488abec439ea977329505633b50ff56bce43 Mon Sep 17 00:00:00 2001
From: 唐耀东 <18861537@qq.com>
Date: 星期五, 13 五月 2022 17:20:16 +0800
Subject: [PATCH] 提交代码
---
src/views/components/school/index.vue | 1
vue.config.js | 2
src/api/oa/exchange.js | 44 +
src/views/components/server/list.vue | 157 ++++
src/views/construction/server/index.vue | 504 +++++++++++++++
src/api/oa/system.js | 44 +
src/views/construction/system/index.vue | 449 +++++++++++++
src/api/oa/server.js | 44 +
src/views/construction/exchange/index.vue | 538 ++++++++++++++++
src/views/construction/ipc/index.vue | 38
src/views/construction/iot/index.vue | 1
src/views/construction/constructionList/index.vue | 24
src/views/components/server/index.vue | 87 ++
src/views/construction/ai/index.vue | 6
src/views/construction/nvr/index.vue | 5
src/components/FileUpload/index.vue | 2
16 files changed, 1,925 insertions(+), 21 deletions(-)
diff --git a/src/api/oa/exchange.js b/src/api/oa/exchange.js
new file mode 100644
index 0000000..4f2c27c
--- /dev/null
+++ b/src/api/oa/exchange.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ浜ゆ崲璁惧鍒楄〃
+export function listExchange(query) {
+ return request({
+ url: '/oa/exchange/list',
+ method: 'get',
+ params: query
+ })
+}
+
+// 鏌ヨ浜ゆ崲璁惧璇︾粏
+export function getExchange(id) {
+ return request({
+ url: '/oa/exchange/' + id,
+ method: 'get'
+ })
+}
+
+// 鏂板浜ゆ崲璁惧
+export function addExchange(data) {
+ return request({
+ url: '/oa/exchange',
+ method: 'post',
+ data: data
+ })
+}
+
+// 淇敼浜ゆ崲璁惧
+export function updateExchange(data) {
+ return request({
+ url: '/oa/exchange',
+ method: 'put',
+ data: data
+ })
+}
+
+// 鍒犻櫎浜ゆ崲璁惧
+export function delExchange(id) {
+ return request({
+ url: '/oa/exchange/' + id,
+ method: 'delete'
+ })
+}
diff --git a/src/api/oa/server.js b/src/api/oa/server.js
new file mode 100644
index 0000000..940335d
--- /dev/null
+++ b/src/api/oa/server.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ鏈嶅姟鍣ㄥ垪琛�
+export function listServer(query) {
+ return request({
+ url: '/oa/server/list',
+ method: 'get',
+ params: query
+ })
+}
+
+// 鏌ヨ鏈嶅姟鍣ㄨ缁�
+export function getServer(id) {
+ return request({
+ url: '/oa/server/' + id,
+ method: 'get'
+ })
+}
+
+// 鏂板鏈嶅姟鍣�
+export function addServer(data) {
+ return request({
+ url: '/oa/server',
+ method: 'post',
+ data: data
+ })
+}
+
+// 淇敼鏈嶅姟鍣�
+export function updateServer(data) {
+ return request({
+ url: '/oa/server',
+ method: 'put',
+ data: data
+ })
+}
+
+// 鍒犻櫎鏈嶅姟鍣�
+export function delServer(id) {
+ return request({
+ url: '/oa/server/' + id,
+ method: 'delete'
+ })
+}
diff --git a/src/api/oa/system.js b/src/api/oa/system.js
new file mode 100644
index 0000000..151d154
--- /dev/null
+++ b/src/api/oa/system.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ杞欢绯荤粺鍒楄〃
+export function listSystem(query) {
+ return request({
+ url: '/oa/system/list',
+ method: 'get',
+ params: query
+ })
+}
+
+// 鏌ヨ杞欢绯荤粺璇︾粏
+export function getSystem(id) {
+ return request({
+ url: '/oa/system/' + id,
+ method: 'get'
+ })
+}
+
+// 鏂板杞欢绯荤粺
+export function addSystem(data) {
+ return request({
+ url: '/oa/system',
+ method: 'post',
+ data: data
+ })
+}
+
+// 淇敼杞欢绯荤粺
+export function updateSystem(data) {
+ return request({
+ url: '/oa/system',
+ method: 'put',
+ data: data
+ })
+}
+
+// 鍒犻櫎杞欢绯荤粺
+export function delSystem(id) {
+ return request({
+ url: '/oa/system/' + id,
+ method: 'delete'
+ })
+}
diff --git a/src/components/FileUpload/index.vue b/src/components/FileUpload/index.vue
index 49a77bb..5c02bb0 100644
--- a/src/components/FileUpload/index.vue
+++ b/src/components/FileUpload/index.vue
@@ -60,7 +60,7 @@
// 鏂囦欢绫诲瀷, 渚嬪['png', 'jpg', 'jpeg']
fileType: {
type: Array,
- default: () => ["doc", "xls", "ppt", "txt", "pdf"],
+ default: () => ["doc", "xls", "ppt", "txt", "pdf", "zip"],
},
// 鏄惁鏄剧ず鎻愮ず
isShowTip: {
diff --git a/src/views/components/school/index.vue b/src/views/components/school/index.vue
index 1679ecd..d8fe39d 100644
--- a/src/views/components/school/index.vue
+++ b/src/views/components/school/index.vue
@@ -41,7 +41,6 @@
},
methods: {
getList() {
- this.loading = true;
listSchool(this.queryParams).then(r => {
this.list = r.data;
if (this.list.length > 0) {
diff --git a/src/views/components/server/index.vue b/src/views/components/server/index.vue
new file mode 100644
index 0000000..d51ccf1
--- /dev/null
+++ b/src/views/components/server/index.vue
@@ -0,0 +1,87 @@
+<template>
+ <div>
+ <el-input placeholder="璇烽�夋嫨" :value="name" disabled>
+ <el-button slot="append" icon="el-icon-thumb" @click="handleClick"></el-button>
+ </el-input>
+ <el-dialog title="鏈嶅姟鍣�" :visible.sync="open" width="1000px" :append-to-body="true" :destroy-on-close="true">
+ <server-list v-if="open" ref="serverRef" :schoolId="schoolId"></server-list>
+ <div slot="footer" class="dialog-footer">
+ <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+ <el-button @click="open = false">鍙� 娑�</el-button>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import serverList from "./list";
+import {getServer} from "@/api/oa/server";
+
+/**
+ * 楂樻牎NVR
+ */
+export default {
+ name: "ServerInput",
+ components: {
+ serverList
+ },
+ model: {
+ prop: 'value',
+ event: 'change'
+ },
+ props: {
+ value: {
+ type: [Number],
+ default: undefined
+ },
+ schoolId: {
+ type: Number,
+ default: undefined
+ }
+ },
+ data() {
+ return {
+ open: false,
+ name: ''
+ }
+ },
+ watch: {
+ 'value': function (v) {
+ if (v) {
+ getServer(v).then(response => {
+ this.name = response.data.deploymentName;
+ });
+ }else {
+ this.name = '';
+ }
+ }
+ },
+ created() {
+ if (this.value) {
+ getServer(this.value).then(response => {
+ this.name = response.data.deploymentName;
+ });
+ }
+ },
+ methods: {
+ handleClick() {
+ this.open = true;
+ },
+ submitForm() {
+ const row = this.$refs.serverRef.currentRow;
+ if (!row) {
+ this.$message.warning("璇烽�夋嫨涓�鏉℃暟鎹�")
+ this.buttonLoading = false;
+ return;
+ }
+ this.name = row.deploymentName;
+ this.open = false;
+ this.$emit("change", row.id);
+ }
+ }
+}
+</script>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/src/views/components/server/list.vue b/src/views/components/server/list.vue
new file mode 100644
index 0000000..8ccb372
--- /dev/null
+++ b/src/views/components/server/list.vue
@@ -0,0 +1,157 @@
+<template>
+ <div class="app-container">
+ <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+ <el-form-item label="閮ㄧ讲浣嶇疆" prop="buildingId">
+ <building v-model="queryParams.buildingId" :schoolId="schoolId"></building>
+ </el-form-item>
+ <el-form-item label="閮ㄧ讲鍚嶇О" prop="name">
+ <el-input v-model="queryParams.deploymentName" placeholder="璇疯緭鍏ラ儴缃插悕绉�" />
+ </el-form-item>
+<!-- <el-form-item label="鎵�灞炲崟浣�" prop="organizationId">-->
+<!-- <organization v-model="queryParams.organizationId" :schoolId="schoolId"></organization>-->
+<!-- </el-form-item>-->
+<!-- <el-form-item label="鏂藉伐鎵规" prop="constructionBatchId">-->
+<!-- <construction-batch v-model="queryParams.constructionBatchId" :schoolId="schoolId"></construction-batch>-->
+<!-- </el-form-item>-->
+<!-- <el-form-item label="鍨嬪彿" prop="model">-->
+<!-- <el-input-->
+<!-- v-model="queryParams.model"-->
+<!-- placeholder="璇疯緭鍏ュ瀷鍙�"-->
+<!-- clearable-->
+<!-- size="small"-->
+<!-- @keyup.enter.native="handleQuery"-->
+<!-- />-->
+<!-- </el-form-item>-->
+<!-- <el-form-item label="鐢熶骇鍘傚晢" prop="manufacturerId">-->
+<!-- <manufacturer v-model="queryParams.manufacturerId"></manufacturer>-->
+<!-- </el-form-item>-->
+ <el-form-item>
+ <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
+ <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
+ </el-form-item>
+ </el-form>
+
+ <el-table v-loading="loading" :data="serverList" highlight-current-row
+ @current-change="handleCurrentChange">
+ <el-table-column label="搴忓彿" type="index" align="center">
+ <template slot-scope="scope">
+ <span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="閮ㄧ讲鍚嶇О" align="center" prop="deploymentName"/>
+ <el-table-column label="LAN" align="center" prop="lan"/>
+ <el-table-column label="IP" align="center" prop="ip"/>
+ <el-table-column label="鎿嶄綔绯荤粺" align="center" prop="operatingSystem">
+ <template slot-scope="scope">
+ <dict-tag :options="dict.type.DICT115" :value="scope.row.operatingSystem"/>
+ </template>
+ </el-table-column>
+ <!-- <el-table-column label="璐︽埛" align="center" prop="account" />-->
+ <el-table-column label="閮ㄧ讲浣嶇疆" align="center" prop="buildingId_dictText"/>
+ <el-table-column label="鏈烘煖鍙�" align="center" prop="cabinetNumber"/>
+ <el-table-column label="鏈烘灦鍙�" align="center" prop="rackNumber"/>
+ <el-table-column label="鎵�灞炲崟浣�" align="center" prop="organizationId_dictText"/>
+ <el-table-column label="鏂藉伐鎵规" align="center" prop="constructionBatchId_dictText"/>
+ <!-- <el-table-column label="搴忓垪鍙�" align="center" prop="serialNumber" />-->
+ <el-table-column label="鍨嬪彿" align="center" prop="model"/>
+ <el-table-column label="鐢熶骇鍘傚晢" align="center" prop="manufacturerId_dictText"/>
+ <!-- <el-table-column label="鎬ц兘鎸囨爣" align="center" prop="performanceIndex" />-->
+ <!-- <el-table-column label="澶囨敞" align="center" prop="remarks" />-->
+ <!-- <el-table-column label="闄勪欢" align="center" prop="filePath" />-->
+ </el-table>
+
+ <pagination
+ v-show="total>0"
+ :total="total"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="getList"
+ />
+ </div>
+</template>
+
+<script>
+import {listServer, getServer, delServer, addServer, updateServer} from "@/api/oa/server";
+import building from "../../components/building";
+import organization from "../../components/organization";
+import constructionBatch from "../../components/constructionBatch";
+import manufacturer from "../../components/manufacturer";
+import nvr from "../../components/nvr";
+
+export default {
+ name: "Server",
+ dicts: ['DICT115'],
+ components: {
+ building,
+ organization,
+ constructionBatch,
+ manufacturer,
+ nvr
+ },
+ props: {
+ schoolId: {
+ type: Number,
+ default: undefined
+ }
+ },
+ data() {
+ return {
+ // 鎸夐挳loading
+ buttonLoading: false,
+ // 閬僵灞�
+ loading: true,
+ // 閫変腑鏁扮粍
+ ids: [],
+ // 闈炲崟涓鐢�
+ single: true,
+ // 闈炲涓鐢�
+ multiple: true,
+ // 鏄剧ず鎼滅储鏉′欢
+ showSearch: true,
+ // 鎬绘潯鏁�
+ total: 0,
+ // 鏈嶅姟鍣ㄨ〃鏍兼暟鎹�
+ serverList: [],
+ // 鏌ヨ鍙傛暟
+ queryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ buildingId: undefined,
+ organizationId: undefined,
+ constructionBatchId: undefined,
+ model: undefined,
+ manufacturerId: undefined,
+ deploymentName: undefined
+ },
+ currentRow: undefined
+ };
+ },
+ created() {
+ this.getList();
+ },
+ methods: {
+ /** 鏌ヨ鏈嶅姟鍣ㄥ垪琛� */
+ getList() {
+ this.loading = true;
+ listServer(Object.assign({}, this.queryParams, {schoolId: this.schoolId})).then(response => {
+ this.serverList = response.rows;
+ this.total = response.total;
+ this.loading = false;
+ });
+ },
+ /** 鎼滅储鎸夐挳鎿嶄綔 */
+ handleQuery() {
+ this.queryParams.pageNum = 1;
+ this.getList();
+ },
+ /** 閲嶇疆鎸夐挳鎿嶄綔 */
+ resetQuery() {
+ this.resetForm("queryForm");
+ this.handleQuery();
+ },
+ handleCurrentChange(v) {
+ this.currentRow = v;
+ }
+ }
+};
+</script>
diff --git a/src/views/construction/ai/index.vue b/src/views/construction/ai/index.vue
index ec0e800..033ecb4 100644
--- a/src/views/construction/ai/index.vue
+++ b/src/views/construction/ai/index.vue
@@ -68,7 +68,11 @@
<el-table v-loading="loading" :data="aiList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
- <el-table-column label="" align="center" prop="id" v-if="true"/>
+ <el-table-column label="搴忓彿" type="index" align="center">
+ <template slot-scope="scope">
+ <span>{{(queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1}}</span>
+ </template>
+ </el-table-column>
<el-table-column label="閮ㄧ讲鍚嶇О" align="center" prop="deploymentName"/>
<el-table-column label="鏀寔閫氶亾" align="center" prop="passageway">
<template slot-scope="scope">
diff --git a/src/views/construction/constructionList/index.vue b/src/views/construction/constructionList/index.vue
index a9374a4..10a2808 100644
--- a/src/views/construction/constructionList/index.vue
+++ b/src/views/construction/constructionList/index.vue
@@ -4,7 +4,7 @@
<div class="tree-list">
<school ref="schoolRef" @schoolChange="schoolChange"></school>
</div>
- <div class="right-view">
+ <div class="right-view" v-loading="loading">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="鏂藉伐姒傚喌" name="first">鏂藉伐姒傚喌</el-tab-pane>
<el-tab-pane label="IPC璁惧" name="second">
@@ -19,9 +19,15 @@
<el-tab-pane label="AI璁惧" name="five">
<ai v-if="activeName === 'five'" :schoolId="schoolId"></ai>
</el-tab-pane>
- <el-tab-pane label="浜ゆ崲璁惧" name="six">浜ゆ崲璁惧</el-tab-pane>
- <el-tab-pane label="鏈嶅姟鍣�" name="seven">鏈嶅姟鍣�</el-tab-pane>
- <el-tab-pane label="杞欢绯荤粺" name="eight">杞欢绯荤粺</el-tab-pane>
+ <el-tab-pane label="浜ゆ崲璁惧" name="six">
+ <exchange v-if="activeName === 'six'" :schoolId="schoolId"></exchange>
+ </el-tab-pane>
+ <el-tab-pane label="鏈嶅姟鍣�" name="seven">
+ <server v-if="activeName === 'seven'" :schoolId="schoolId"></server>
+ </el-tab-pane>
+ <el-tab-pane label="杞欢绯荤粺" name="eight">
+ <system v-if="activeName === 'eight'" :schoolId="schoolId"></system>
+ </el-tab-pane>
</el-tabs>
<div class="right-view-title-icon">
<i class="el-icon-search" @click="batchOpen = true"></i>
@@ -47,6 +53,9 @@
import ipc from '../ipc'
import iot from '../iot'
import ai from '../ai'
+import exchange from '../exchange'
+import server from '../server'
+import system from '../system'
export default {
name: "constructionList",
@@ -57,10 +66,14 @@
nvr,
ipc,
iot,
- ai
+ ai,
+ exchange,
+ server,
+ system
},
data() {
return {
+ loading: true,
activeName: 'first',
batchOpen: false,
ipOpen: false,
@@ -72,6 +85,7 @@
schoolChange(v) {
this.schoolId = v;
this.activeName = 'first';
+ this.loading = false;
},
handleClick(tab, event) {
console.log(tab, event);
diff --git a/src/views/construction/exchange/index.vue b/src/views/construction/exchange/index.vue
new file mode 100644
index 0000000..2849e98
--- /dev/null
+++ b/src/views/construction/exchange/index.vue
@@ -0,0 +1,538 @@
+<template>
+ <div class="app-container">
+ <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+ <el-form-item label="瀹夎浣嶇疆" prop="buildingId">
+ <building v-model="queryParams.buildingId" :schoolId="schoolId"></building>
+ </el-form-item>
+ <el-form-item label="鎵�灞炲崟浣�" prop="organizationId">
+ <organization v-model="queryParams.organizationId" :schoolId="schoolId"></organization>
+ </el-form-item>
+ <el-form-item label="鏂藉伐鎵规" prop="constructionBatchId">
+ <construction-batch v-model="queryParams.constructionBatchId" :schoolId="schoolId"></construction-batch>
+ </el-form-item>
+ <el-form-item label="鍨嬪彿" prop="model">
+ <el-input
+ v-model="queryParams.model"
+ placeholder="璇疯緭鍏ュ瀷鍙�"
+ clearable
+ size="small"
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ <el-form-item label="鐢熶骇鍘傚晢" prop="manufacturerId">
+ <manufacturer v-model="queryParams.manufacturerId"></manufacturer>
+ </el-form-item>
+ <el-form-item label="缃戠粶绔彛" prop="networkPort">
+ <el-select v-model="queryParams.networkPort" placeholder="璇烽�夋嫨缃戠粶绔彛" clearable size="small">
+ <el-option
+ v-for="dict in dict.type.DICT113"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鎸囨爣A" prop="idnexA">
+ <el-select v-model="queryParams.idnexA" placeholder="璇烽�夋嫨鎸囨爣A" clearable size="small">
+ <el-option
+ v-for="dict in dict.type.DICT114"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="绾ц仈绔彛" prop="cascadePort">
+ <el-select v-model="queryParams.cascadePort" placeholder="璇烽�夋嫨绾ц仈绔彛" clearable size="small">
+ <el-option
+ v-for="dict in dict.type.DICT113"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鎸囨爣B" prop="indexB">
+ <el-select v-model="queryParams.indexB" placeholder="璇烽�夋嫨鎸囨爣B" clearable size="small">
+ <el-option
+ v-for="dict in dict.type.DICT114"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
+ <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
+ </el-form-item>
+ </el-form>
+
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <el-button
+ type="primary"
+ plain
+ icon="el-icon-plus"
+ size="mini"
+ @click="handleAdd"
+ v-hasPermi="['oa:exchange:add']"
+ >鏂板
+ </el-button>
+ </el-col>
+ <el-col :span="1.5">
+ <el-button
+ type="success"
+ plain
+ icon="el-icon-edit"
+ size="mini"
+ :disabled="single"
+ @click="handleUpdate"
+ v-hasPermi="['oa:exchange:edit']"
+ >淇敼
+ </el-button>
+ </el-col>
+ <el-col :span="1.5">
+ <el-button
+ type="danger"
+ plain
+ icon="el-icon-delete"
+ size="mini"
+ :disabled="multiple"
+ @click="handleDelete"
+ v-hasPermi="['oa:exchange:remove']"
+ >鍒犻櫎
+ </el-button>
+ </el-col>
+ </el-row>
+
+ <el-table v-loading="loading" :data="exchangeList" @selection-change="handleSelectionChange">
+ <el-table-column type="selection" width="55" align="center"/>
+ <el-table-column label="搴忓彿" type="index" align="center">
+ <template slot-scope="scope">
+ <span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="缃戠粶绔彛" align="center" prop="networkPort">
+ <template slot-scope="scope">
+ <dict-tag :options="dict.type.DICT113" :value="scope.row.networkPort"/>
+ </template>
+ </el-table-column>
+ <el-table-column label="鎸囨爣A" align="center" prop="idnexA">
+ <template slot-scope="scope">
+ <dict-tag :options="dict.type.DICT114" :value="scope.row.idnexA"/>
+ </template>
+ </el-table-column>
+ <el-table-column label="绾ц仈绔彛" align="center" prop="cascadePort">
+ <template slot-scope="scope">
+ <dict-tag :options="dict.type.DICT113" :value="scope.row.cascadePort"/>
+ </template>
+ </el-table-column>
+ <el-table-column label="鎸囨爣B" align="center" prop="indexB">
+ <template slot-scope="scope">
+ <dict-tag :options="dict.type.DICT114" :value="scope.row.indexB"/>
+ </template>
+ </el-table-column>
+ <el-table-column label="瀹夎浣嶇疆" align="center" prop="buildingId_dictText"/>
+ <el-table-column label="鍏蜂綋浣嶇疆" align="center" prop="address"/>
+ <el-table-column label="鎵�灞炲崟浣�" align="center" prop="organizationId_dictText"/>
+ <el-table-column label="鏂藉伐鎵规" align="center" prop="constructionBatchId_dictText"/>
+ <el-table-column label="鍨嬪彿" align="center" prop="model"/>
+ <el-table-column label="鐢熶骇鍘傚晢" align="center" prop="manufacturerId_dictText"/>
+ <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
+ <template slot-scope="scope">
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-view"
+ @click="handleInfo(scope.row)"
+ >鏌ョ湅
+ </el-button>
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-edit"
+ @click="handleUpdate(scope.row)"
+ v-hasPermi="['oa:exchange:edit']"
+ >淇敼
+ </el-button>
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-folder"
+ @click="handleUpload(scope.row)"
+ >闄勪欢
+ </el-button>
+ <el-button
+ size="mini"
+ type="text"
+ class="del-btn"
+ icon="el-icon-delete"
+ @click="handleDelete(scope.row)"
+ v-hasPermi="['oa:exchange:remove']"
+ >鍒犻櫎
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <pagination
+ v-show="total>0"
+ :total="total"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="getList"
+ />
+
+ <!-- 娣诲姞鎴栦慨鏀逛氦鎹㈣澶囧璇濇 -->
+ <el-dialog :title="title" :visible.sync="open" width="700px" :append-to-body="true" :close-on-click-modal="false">
+ <el-form ref="form" :model="form" :rules="rules" label-width="80px" :disabled="disabled">
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="缃戠粶绔彛" prop="networkPort">
+ <el-select v-model="form.networkPort" placeholder="璇烽�夋嫨缃戠粶绔彛">
+ <el-option
+ v-for="dict in dict.type.DICT113"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鎸囨爣A" prop="idnexA">
+ <el-select v-model="form.idnexA" placeholder="璇烽�夋嫨鎸囨爣A">
+ <el-option
+ v-for="dict in dict.type.DICT114"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="绾ц仈绔彛" prop="cascadePort">
+ <el-select v-model="form.cascadePort" placeholder="璇烽�夋嫨绾ц仈绔彛">
+ <el-option
+ v-for="dict in dict.type.DICT113"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鎸囨爣B" prop="indexB">
+ <el-select v-model="form.indexB" placeholder="璇烽�夋嫨鎸囨爣B">
+ <el-option
+ v-for="dict in dict.type.DICT114"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-form-item label="瀹夎浣嶇疆" prop="buildingId">
+ <building v-if="open" v-model="form.buildingId" :schoolId="schoolId"></building>
+ </el-form-item>
+ <el-form-item label="鍏蜂綋浣嶇疆" prop="address">
+ <el-input v-model="form.address" maxlength="512" show-word-limit type="textarea" :rows="8" placeholder="璇疯緭鍏ュ叿浣撲綅缃�""/>
+ </el-form-item>
+ <el-form-item label="鎵�灞炲崟浣�" prop="organizationId">
+ <organization v-if="open" v-model="form.organizationId" :schoolId="schoolId"></organization>
+ </el-form-item>
+ <el-form-item label="鏂藉伐鎵规" prop="constructionBatchId">
+ <constructionBatch v-if="open" v-model="form.constructionBatchId" :schoolId="schoolId"></constructionBatch>
+ </el-form-item>
+ <el-form-item label="搴忓垪鍙�" prop="serialNumber">
+ <el-input v-model="form.serialNumber" maxlength="64" show-word-limit placeholder="璇疯緭鍏ュ簭鍒楀彿"/>
+ </el-form-item>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="鍨嬪彿" prop="model">
+ <el-input v-model="form.model" maxlength="64" show-word-limit placeholder="璇疯緭鍏ュ瀷鍙�"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鐢熶骇鍘傚晢" prop="manufacturerId">
+ <manufacturer v-model="form.manufacturerId"></manufacturer>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button :loading="buttonLoading" :disabled="disabled" type="primary" @click="submitForm">纭� 瀹�</el-button>
+ <el-button @click="cancel">鍙� 娑�</el-button>
+ </div>
+ </el-dialog>
+
+ <!-- 闄勪欢 -->
+ <Dialog title="闄勪欢" :visible.sync="fileOpen" width="500px" :append-to-body="true" :destroy-on-close="true">
+ <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+ <el-form-item label="闄勪欢" prop="filePath">
+ <fileUpload v-model="form.filePath" :limit="1"/>
+ </el-form-item>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button :loading="buttonLoading" type="primary" @click="submitForm">纭� 瀹�</el-button>
+ <el-button @click="cancel">鍙� 娑�</el-button>
+ </div>
+ </Dialog>
+ </div>
+</template>
+
+<script>
+import {listExchange, getExchange, delExchange, addExchange, updateExchange} from "@/api/oa/exchange";
+import building from "../../components/building";
+import organization from "../../components/organization";
+import constructionBatch from "../../components/constructionBatch";
+import manufacturer from "../../components/manufacturer";
+import nvr from "../../components/nvr";
+
+export default {
+ name: "Exchange",
+ dicts: ['DICT113', 'DICT114', 'DICT113', 'DICT114'],
+ components: {
+ building,
+ organization,
+ constructionBatch,
+ manufacturer,
+ nvr
+ },
+ props: {
+ schoolId: {
+ type: Number,
+ default: undefined
+ }
+ },
+ data() {
+ return {
+ // 鎸夐挳loading
+ buttonLoading: false,
+ // 閬僵灞�
+ loading: true,
+ // 閫変腑鏁扮粍
+ ids: [],
+ // 闈炲崟涓鐢�
+ single: true,
+ // 闈炲涓鐢�
+ multiple: true,
+ // 鏄剧ず鎼滅储鏉′欢
+ showSearch: true,
+ // 鎬绘潯鏁�
+ total: 0,
+ // 浜ゆ崲璁惧琛ㄦ牸鏁版嵁
+ exchangeList: [],
+ // 寮瑰嚭灞傛爣棰�
+ title: "",
+ // 鏄惁鏄剧ず寮瑰嚭灞�
+ open: false,
+ // 鏌ヨ鍙傛暟
+ queryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ schoolId: undefined,
+ networkPort: undefined,
+ idnexA: undefined,
+ cascadePort: undefined,
+ indexB: undefined,
+ buildingId: undefined,
+ organizationId: undefined,
+ constructionBatchId: undefined,
+ manufacturerId: undefined,
+ model: undefined
+ },
+ // 琛ㄥ崟鍙傛暟
+ form: {},
+ // 琛ㄥ崟鏍¢獙
+ rules: {
+ id: [
+ {required: true, message: "涓嶈兘涓虹┖", trigger: "blur"}
+ ],
+ schoolId: [
+ {required: true, message: "楂樻牎涓嶈兘涓虹┖", trigger: "blur"}
+ ],
+ networkPort: [
+ {required: true, message: "缃戠粶绔彛涓嶈兘涓虹┖", trigger: "change"}
+ ],
+ idnexA: [
+ {required: true, message: "鎸囨爣A涓嶈兘涓虹┖", trigger: "change"}
+ ],
+ cascadePort: [
+ {required: true, message: "绾ц仈绔彛涓嶈兘涓虹┖", trigger: "change"}
+ ],
+ indexB: [
+ {required: true, message: "鎸囨爣B涓嶈兘涓虹┖", trigger: "change"}
+ ],
+ buildingId: [
+ {required: true, message: "瀹夎浣嶇疆涓嶈兘涓虹┖", trigger: "blur"}
+ ],
+ organizationId: [
+ {required: true, message: "鎵�灞炲崟浣嶄笉鑳戒负绌�", trigger: "blur"}
+ ],
+ constructionBatchId: [
+ {required: true, message: "鏂藉伐鎵规涓嶈兘涓虹┖", trigger: "blur"}
+ ],
+ },
+ disabled: false,
+ fileOpen: false
+ };
+ },
+ created() {
+ this.getList();
+ },
+ methods: {
+ /** 鏌ヨ浜ゆ崲璁惧鍒楄〃 */
+ getList() {
+ this.loading = true;
+ listExchange(Object.assign({}, this.queryParams, {schoolId: this.schoolId})).then(response => {
+ this.exchangeList = response.rows;
+ this.total = response.total;
+ this.loading = false;
+ });
+ },
+ // 鍙栨秷鎸夐挳
+ cancel() {
+ this.open = false;
+ this.fileOpen = false;
+ this.reset();
+ },
+ // 琛ㄥ崟閲嶇疆
+ reset() {
+ this.form = {
+ id: undefined,
+ schoolId: undefined,
+ networkPort: undefined,
+ idnexA: undefined,
+ cascadePort: undefined,
+ indexB: undefined,
+ buildingId: undefined,
+ address: undefined,
+ organizationId: undefined,
+ constructionBatchId: undefined,
+ serialNumber: undefined,
+ model: undefined,
+ manufacturerId: undefined,
+ createTime: undefined,
+ createBy: undefined,
+ updateBy: undefined,
+ updateTime: undefined,
+ delFlag: undefined
+ };
+ this.resetForm("form");
+ },
+ /** 鎼滅储鎸夐挳鎿嶄綔 */
+ handleQuery() {
+ this.queryParams.pageNum = 1;
+ this.getList();
+ },
+ /** 閲嶇疆鎸夐挳鎿嶄綔 */
+ resetQuery() {
+ this.resetForm("queryForm");
+ this.handleQuery();
+ },
+ // 澶氶�夋閫変腑鏁版嵁
+ handleSelectionChange(selection) {
+ this.ids = selection.map(item => item.id)
+ this.single = selection.length !== 1
+ this.multiple = !selection.length
+ },
+ /** 鏂板鎸夐挳鎿嶄綔 */
+ handleAdd() {
+ this.reset();
+ this.disabled = false;
+ this.open = true;
+ this.title = "娣诲姞浜ゆ崲璁惧";
+ },
+ handleInfo(row) {
+ this.loading = true;
+ this.reset();
+ this.disabled = true;
+ getExchange(row.id).then(response => {
+ this.loading = false;
+ this.form = response.data;
+ this.open = true;
+ this.title = "浜ゆ崲璁惧璇︽儏";
+ });
+ },
+ /** 淇敼鎸夐挳鎿嶄綔 */
+ handleUpdate(row) {
+ this.loading = true;
+ this.disabled = false
+ this.reset();
+ const id = row.id || this.ids
+ getExchange(id).then(response => {
+ this.loading = false;
+ this.form = response.data;
+ this.open = true;
+ this.title = "淇敼浜ゆ崲璁惧";
+ });
+ },
+ handleUpload(row) {
+ this.loading = true;
+ this.disabled = false
+ this.reset();
+ getExchange(row.id).then(response => {
+ this.loading = false;
+ this.form = response.data;
+ this.fileOpen = true;
+ });
+ },
+ /** 鎻愪氦鎸夐挳 */
+ submitForm() {
+ this.$refs["form"].validate(valid => {
+ if (valid) {
+ this.buttonLoading = true;
+ this.form.schoolId = this.schoolId;
+ if (this.form.id != null) {
+ updateExchange(this.form).then(response => {
+ this.$modal.msgSuccess("淇敼鎴愬姛");
+ this.open = false;
+ this.fileOpen = false;
+ this.getList();
+ }).finally(() => {
+ this.buttonLoading = false;
+ });
+ } else {
+ addExchange(this.form).then(response => {
+ this.$modal.msgSuccess("鏂板鎴愬姛");
+ this.open = false;
+ this.fileOpen = false;
+ this.getList();
+ }).finally(() => {
+ this.buttonLoading = false;
+ });
+ }
+ }
+ });
+ },
+ /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+ handleDelete(row) {
+ const ids = row.id || this.ids;
+ this.$modal.confirm('鏄惁纭鍒犻櫎浜ゆ崲璁惧缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�').then(() => {
+ this.loading = true;
+ return delExchange(ids);
+ }).then(() => {
+ this.loading = false;
+ this.getList();
+ this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ }).finally(() => {
+ this.loading = false;
+ });
+ },
+ /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+ handleExport() {
+ this.download('oa/exchange/export', {
+ ...this.queryParams
+ }, `exchange_${new Date().getTime()}.xlsx`)
+ }
+ }
+};
+</script>
diff --git a/src/views/construction/iot/index.vue b/src/views/construction/iot/index.vue
index 7485690..7d63c1e 100644
--- a/src/views/construction/iot/index.vue
+++ b/src/views/construction/iot/index.vue
@@ -131,7 +131,6 @@
type="text"
icon="el-icon-view"
@click="handleInfo(scope.row)"
- v-hasPermi="['oa:iot:edit']"
>鏌ョ湅
</el-button>
<el-button
diff --git a/src/views/construction/ipc/index.vue b/src/views/construction/ipc/index.vue
index 0b9ad00..fe7c503 100644
--- a/src/views/construction/ipc/index.vue
+++ b/src/views/construction/ipc/index.vue
@@ -88,6 +88,13 @@
<el-button
size="mini"
type="text"
+ icon="el-icon-view"
+ @click="handleInfo(scope.row)"
+ >鏌ョ湅
+ </el-button>
+ <el-button
+ size="mini"
+ type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['oa:ipc:edit']"
@@ -117,7 +124,7 @@
<!-- 娣诲姞鎴栦慨鏀筰pc璁惧瀵硅瘽妗� -->
<el-dialog :title="title" :visible.sync="open" width="700px" :append-to-body="true" :close-on-click-modal="false"
:destroy-on-close="true">
- <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+ <el-form ref="form" :model="form" :rules="rules" label-width="80px" :disabled="disabled">
<el-row>
<el-col :span="9">
<el-form-item label="MAC" prop="mac">
@@ -183,8 +190,8 @@
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
- <el-button :loading="buttonLoading" type="primary" @click="copy">澶嶅埗涓婁竴鏉′俊鎭�</el-button>
- <el-button :loading="buttonLoading" type="primary" @click="submitForm">纭� 瀹�</el-button>
+ <el-button :loading="buttonLoading" :disabled="disabled" type="primary" @click="copy">澶嶅埗涓婁竴鏉′俊鎭�</el-button>
+ <el-button :loading="buttonLoading" :disabled="disabled" type="primary" @click="submitForm">纭� 瀹�</el-button>
<el-button @click="cancel">鍙� 娑�</el-button>
</div>
</el-dialog>
@@ -286,7 +293,8 @@
{required: true, message: "鏂藉伐鎵规涓嶈兘涓虹┖", trigger: "blur"}
],
passageway: []
- }
+ },
+ disabled: false
};
},
computed: {
@@ -367,19 +375,33 @@
/** 鏂板鎸夐挳鎿嶄綔 */
handleAdd() {
this.reset();
+ this.disabled = false;
this.open = true;
- this.title = "娣诲姞ipc璁惧";
+ this.title = "娣诲姞IPC璁惧";
},
- /** 淇敼鎸夐挳鎿嶄綔 */
- handleUpdate(row) {
+ handleInfo(row) {
this.loading = true;
+ this.disabled = true;
this.reset();
const id = row.id || this.ids
getIpc(id).then(response => {
this.loading = false;
this.form = response.data;
this.open = true;
- this.title = "淇敼ipc璁惧";
+ this.title = "IPC璁惧璇︽儏";
+ });
+ },
+ /** 淇敼鎸夐挳鎿嶄綔 */
+ handleUpdate(row) {
+ this.loading = true;
+ this.disabled = false;
+ this.reset();
+ const id = row.id || this.ids
+ getIpc(id).then(response => {
+ this.loading = false;
+ this.form = response.data;
+ this.open = true;
+ this.title = "淇敼IPC璁惧";
});
},
/** 鎻愪氦鎸夐挳 */
diff --git a/src/views/construction/nvr/index.vue b/src/views/construction/nvr/index.vue
index 31db4eb..e010a33 100644
--- a/src/views/construction/nvr/index.vue
+++ b/src/views/construction/nvr/index.vue
@@ -446,7 +446,7 @@
this.loading = false;
this.form = response.data;
this.open = true;
- this.title = "淇敼NVR璁惧";
+ this.title = "NVR璁惧璇︽儏";
});
},
/** 淇敼鎸夐挳鎿嶄綔 */
@@ -515,8 +515,7 @@
this.loading = true;
this.disabled = false;
this.reset();
- const id = row.id || this.ids
- getNvr(id).then(response => {
+ getNvr(row.id).then(response => {
this.loading = false;
this.form = response.data;
this.fileOpen = true;
diff --git a/src/views/construction/server/index.vue b/src/views/construction/server/index.vue
new file mode 100644
index 0000000..28dccd1
--- /dev/null
+++ b/src/views/construction/server/index.vue
@@ -0,0 +1,504 @@
+<template>
+ <div class="app-container">
+ <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+ <el-form-item label="閮ㄧ讲浣嶇疆" prop="buildingId">
+ <building v-model="queryParams.buildingId" :schoolId="schoolId"></building>
+ </el-form-item>
+ <el-form-item label="鎵�灞炲崟浣�" prop="organizationId">
+ <organization v-model="queryParams.organizationId" :schoolId="schoolId"></organization>
+ </el-form-item>
+ <el-form-item label="鏂藉伐鎵规" prop="constructionBatchId">
+ <construction-batch v-model="queryParams.constructionBatchId" :schoolId="schoolId"></construction-batch>
+ </el-form-item>
+ <el-form-item label="鍨嬪彿" prop="model">
+ <el-input
+ v-model="queryParams.model"
+ placeholder="璇疯緭鍏ュ瀷鍙�"
+ clearable
+ size="small"
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ <el-form-item label="鐢熶骇鍘傚晢" prop="manufacturerId">
+ <manufacturer v-model="queryParams.manufacturerId"></manufacturer>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
+ <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
+ </el-form-item>
+ </el-form>
+
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <el-button
+ type="primary"
+ plain
+ icon="el-icon-plus"
+ size="mini"
+ @click="handleAdd"
+ v-hasPermi="['oa:server:add']"
+ >鏂板
+ </el-button>
+ </el-col>
+ <el-col :span="1.5">
+ <el-button
+ type="success"
+ plain
+ icon="el-icon-edit"
+ size="mini"
+ :disabled="single"
+ @click="handleUpdate"
+ v-hasPermi="['oa:server:edit']"
+ >淇敼
+ </el-button>
+ </el-col>
+ <el-col :span="1.5">
+ <el-button
+ type="danger"
+ plain
+ icon="el-icon-delete"
+ size="mini"
+ :disabled="multiple"
+ @click="handleDelete"
+ v-hasPermi="['oa:server:remove']"
+ >鍒犻櫎
+ </el-button>
+ </el-col>
+ </el-row>
+
+ <el-table v-loading="loading" :data="serverList" @selection-change="handleSelectionChange">
+ <el-table-column type="selection" width="55" align="center"/>
+ <el-table-column label="搴忓彿" type="index" align="center">
+ <template slot-scope="scope">
+ <span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="閮ㄧ讲鍚嶇О" align="center" prop="deploymentName"/>
+ <el-table-column label="LAN" align="center" prop="lan"/>
+ <el-table-column label="IP" align="center" prop="ip"/>
+ <el-table-column label="鎿嶄綔绯荤粺" align="center" prop="operatingSystem">
+ <template slot-scope="scope">
+ <dict-tag :options="dict.type.DICT115" :value="scope.row.operatingSystem"/>
+ </template>
+ </el-table-column>
+ <!-- <el-table-column label="璐︽埛" align="center" prop="account" />-->
+ <el-table-column label="閮ㄧ讲浣嶇疆" align="center" prop="buildingId_dictText"/>
+ <el-table-column label="鏈烘煖鍙�" align="center" prop="cabinetNumber"/>
+ <el-table-column label="鏈烘灦鍙�" align="center" prop="rackNumber"/>
+ <el-table-column label="鎵�灞炲崟浣�" align="center" prop="organizationId_dictText"/>
+ <el-table-column label="鏂藉伐鎵规" align="center" prop="constructionBatchId_dictText"/>
+ <!-- <el-table-column label="搴忓垪鍙�" align="center" prop="serialNumber" />-->
+ <el-table-column label="鍨嬪彿" align="center" prop="model"/>
+ <el-table-column label="鐢熶骇鍘傚晢" align="center" prop="manufacturerId_dictText"/>
+ <!-- <el-table-column label="鎬ц兘鎸囨爣" align="center" prop="performanceIndex" />-->
+ <!-- <el-table-column label="澶囨敞" align="center" prop="remarks" />-->
+ <!-- <el-table-column label="闄勪欢" align="center" prop="filePath" />-->
+ <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
+ <template slot-scope="scope">
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-view"
+ @click="handleInfo(scope.row)"
+ >鏌ョ湅
+ </el-button>
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-edit"
+ @click="handleUpdate(scope.row)"
+ v-hasPermi="['oa:server:edit']"
+ >淇敼
+ </el-button>
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-folder"
+ @click="handleUpload(scope.row)"
+ >闄勪欢
+ </el-button>
+ <el-button
+ size="mini"
+ type="text"
+ class="del-btn"
+ icon="el-icon-delete"
+ @click="handleDelete(scope.row)"
+ v-hasPermi="['oa:server:remove']"
+ >鍒犻櫎
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <pagination
+ v-show="total>0"
+ :total="total"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="getList"
+ />
+
+ <!-- 娣诲姞鎴栦慨鏀规湇鍔″櫒瀵硅瘽妗� -->
+ <el-dialog :title="title" :visible.sync="open" width="700px" :append-to-body="true" :close-on-click-modal="false">
+ <el-form ref="form" :model="form" :rules="rules" label-width="80px" :disabled="disabled">
+ <el-form-item label="閮ㄧ讲鍚嶇О" prop="deploymentName">
+ <el-input v-model="form.deploymentName" maxlength="64" show-word-limit placeholder="璇疯緭鍏ラ儴缃插悕绉�"/>
+ </el-form-item>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="LAN" prop="lan">
+ <el-input v-model="form.lan" placeholder="璇疯緭鍏AN"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="IP" prop="ip">
+ <el-input v-model="form.ip" placeholder="璇疯緭鍏P"/>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="鎿嶄綔绯荤粺" prop="operatingSystem">
+ <el-select v-model="form.operatingSystem" placeholder="璇烽�夋嫨鎿嶄綔绯荤粺">
+ <el-option
+ v-for="dict in dict.type.DICT115"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璐︽埛" prop="account">
+ <el-input v-model="form.account" maxlength="64" show-word-limit placeholder="璇疯緭鍏ヨ处鎴�"/>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-form-item label="閮ㄧ讲浣嶇疆" prop="buildingId">
+ <building v-if="open" v-model="form.buildingId" :schoolId="schoolId"></building>
+ </el-form-item>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="鏈烘煖鍙�" prop="cabinetNumber">
+ <el-input v-model="form.cabinetNumber" maxlength="64" show-word-limit placeholder="璇疯緭鍏ユ満鏌滃彿"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鏈烘灦鍙�" maxlength="64" show-word-limit prop="rackNumber">
+ <el-input v-model="form.rackNumber" maxlength="64" show-word-limit placeholder="璇疯緭鍏ユ満鏋跺彿"/>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-form-item label="鎵�灞炲崟浣�" prop="organizationId">
+ <organization v-if="open" v-model="form.organizationId" :schoolId="schoolId"></organization>
+ </el-form-item>
+ <el-form-item label="鏂藉伐鎵规" prop="constructionBatchId">
+ <constructionBatch v-if="open" v-model="form.constructionBatchId" :schoolId="schoolId"></constructionBatch>
+ </el-form-item>
+ <el-form-item label="搴忓垪鍙�" prop="serialNumber">
+ <el-input v-model="form.serialNumber" maxlength="64" show-word-limit placeholder="璇疯緭鍏ュ簭鍒楀彿"/>
+ </el-form-item>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="鍨嬪彿" prop="model">
+ <el-input v-model="form.model" maxlength="64" show-word-limit placeholder="璇疯緭鍏ュ瀷鍙�"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鐢熶骇鍘傚晢" prop="manufacturerId">
+ <manufacturer v-model="form.manufacturerId"></manufacturer>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-form-item label="鎬ц兘鎸囨爣" prop="performanceIndex">
+ <el-input v-model="form.performanceIndex" type="textarea" :rows="8" maxlength="64" show-word-limit
+ placeholder="璇疯緭鍏ュ唴瀹�"/>
+ </el-form-item>
+ <el-form-item label="澶囨敞" prop="remarks">
+ <el-input v-model="form.remarks" type="textarea" :rows="8" maxlength="64" show-word-limit
+ placeholder="璇疯緭鍏ュ唴瀹�"/>
+ </el-form-item>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button :loading="buttonLoading" :disabled="disabled" type="primary" @click="submitForm">纭� 瀹�</el-button>
+ <el-button @click="cancel">鍙� 娑�</el-button>
+ </div>
+ </el-dialog>
+
+ <!-- 闄勪欢 -->
+ <Dialog title="闄勪欢" :visible.sync="fileOpen" width="500px" :append-to-body="true" :destroy-on-close="true">
+ <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+ <el-form-item label="闄勪欢" prop="filePath">
+ <fileUpload v-model="form.filePath" :limit="1"/>
+ </el-form-item>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button :loading="buttonLoading" type="primary" @click="submitForm">纭� 瀹�</el-button>
+ <el-button @click="cancel">鍙� 娑�</el-button>
+ </div>
+ </Dialog>
+ </div>
+</template>
+
+<script>
+import {listServer, getServer, delServer, addServer, updateServer} from "@/api/oa/server";
+import building from "../../components/building";
+import organization from "../../components/organization";
+import constructionBatch from "../../components/constructionBatch";
+import manufacturer from "../../components/manufacturer";
+import nvr from "../../components/nvr";
+
+export default {
+ name: "Server",
+ dicts: ['DICT115'],
+ components: {
+ building,
+ organization,
+ constructionBatch,
+ manufacturer,
+ nvr
+ },
+ props: {
+ schoolId: {
+ type: Number,
+ default: undefined
+ }
+ },
+ data() {
+ return {
+ // 鎸夐挳loading
+ buttonLoading: false,
+ // 閬僵灞�
+ loading: true,
+ // 閫変腑鏁扮粍
+ ids: [],
+ // 闈炲崟涓鐢�
+ single: true,
+ // 闈炲涓鐢�
+ multiple: true,
+ // 鏄剧ず鎼滅储鏉′欢
+ showSearch: true,
+ // 鎬绘潯鏁�
+ total: 0,
+ // 鏈嶅姟鍣ㄨ〃鏍兼暟鎹�
+ serverList: [],
+ // 寮瑰嚭灞傛爣棰�
+ title: "",
+ // 鏄惁鏄剧ず寮瑰嚭灞�
+ open: false,
+ // 鏌ヨ鍙傛暟
+ queryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ buildingId: undefined,
+ organizationId: undefined,
+ constructionBatchId: undefined,
+ model: undefined,
+ manufacturerId: undefined,
+ },
+ // 琛ㄥ崟鍙傛暟
+ form: {},
+ // 琛ㄥ崟鏍¢獙
+ rules: {
+ id: [
+ {required: true, message: "涓嶈兘涓虹┖", trigger: "blur"}
+ ],
+ schoolId: [
+ {required: true, message: "楂樻牎涓嶈兘涓虹┖", trigger: "blur"}
+ ],
+ deploymentName: [
+ {required: true, message: "閮ㄧ讲鍚嶇О涓嶈兘涓虹┖", trigger: "blur"}
+ ],
+ lan: [
+ {required: true, message: "LAN涓嶈兘涓虹┖", trigger: "blur"},
+ {
+ pattern: /^[A-F0-9]{2}(-[A-F0-9]{2}){5}$|^[A-F0-9]{2}(:[A-F0-9]{2}){5}$|^[A-F0-9]{12}$|^[A-F0-9]{4}(\.[A-F0-9]{4}){2}$/,
+ message: "璇疯緭鍏ユ纭殑LAN",
+ trigger: "blur"
+ }
+ ],
+ ip: [
+ {required: true, message: "IP涓嶈兘涓虹┖", trigger: "blur"},
+ {
+ pattern: /^(\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(\d|[1-9]\d|1\d{2}|2[0-5][0-5])\.(\d|[1-9]\d|1\d{2}|2[0-5][0-5])$/,
+ message: "璇疯緭鍏ユ纭殑ip鍦板潃",
+ trigger: "blur"
+ }
+ ],
+ operatingSystem: [
+ {required: true, message: "鎿嶄綔绯荤粺涓嶈兘涓虹┖", trigger: "change"}
+ ],
+ account: [
+ {required: true, message: "璐︽埛涓嶈兘涓虹┖", trigger: "blur"}
+ ],
+ buildingId: [
+ {required: true, message: "閮ㄧ讲浣嶇疆涓嶈兘涓虹┖", trigger: "blur"}
+ ],
+ organizationId: [
+ {required: true, message: "鎵�灞炲崟浣嶄笉鑳戒负绌�", trigger: "blur"}
+ ],
+ constructionBatchId: [
+ {required: true, message: "鏂藉伐鎵规涓嶈兘涓虹┖", trigger: "blur"}
+ ],
+ },
+ disabled: false,
+ fileOpen: false
+ };
+ },
+ created() {
+ this.getList();
+ },
+ methods: {
+ /** 鏌ヨ鏈嶅姟鍣ㄥ垪琛� */
+ getList() {
+ this.loading = true;
+ listServer(Object.assign({}, this.queryParams, {schoolId: this.schoolId})).then(response => {
+ this.serverList = response.rows;
+ this.total = response.total;
+ this.loading = false;
+ });
+ },
+ // 鍙栨秷鎸夐挳
+ cancel() {
+ this.open = false;
+ this.fileOpen = false;
+ this.reset();
+ },
+ // 琛ㄥ崟閲嶇疆
+ reset() {
+ this.form = {
+ id: undefined,
+ schoolId: undefined,
+ deploymentName: undefined,
+ lan: undefined,
+ ip: undefined,
+ operatingSystem: undefined,
+ account: undefined,
+ buildingId: undefined,
+ cabinetNumber: undefined,
+ rackNumber: undefined,
+ organizationId: undefined,
+ constructionBatchId: undefined,
+ serialNumber: undefined,
+ model: undefined,
+ manufacturerId: undefined,
+ performanceIndex: undefined,
+ remarks: undefined,
+ filePath: undefined,
+ createBy: undefined,
+ createTime: undefined,
+ updateBy: undefined,
+ updateTime: undefined,
+ delFlag: undefined
+ };
+ this.resetForm("form");
+ },
+ /** 鎼滅储鎸夐挳鎿嶄綔 */
+ handleQuery() {
+ this.queryParams.pageNum = 1;
+ this.getList();
+ },
+ /** 閲嶇疆鎸夐挳鎿嶄綔 */
+ resetQuery() {
+ this.resetForm("queryForm");
+ this.handleQuery();
+ },
+ // 澶氶�夋閫変腑鏁版嵁
+ handleSelectionChange(selection) {
+ this.ids = selection.map(item => item.id)
+ this.single = selection.length !== 1
+ this.multiple = !selection.length
+ },
+ /** 鏂板鎸夐挳鎿嶄綔 */
+ handleAdd() {
+ this.reset();
+ this.disabled = false;
+ this.open = true;
+ this.title = "娣诲姞鏈嶅姟鍣�";
+ },
+ handleInfo(row) {
+ this.loading = true;
+ this.disabled = true;
+ this.reset();
+ getServer(row.id).then(response => {
+ this.loading = false;
+ this.form = response.data;
+ this.open = true;
+ this.title = "鏈嶅姟鍣ㄨ鎯�";
+ });
+ },
+ /** 淇敼鎸夐挳鎿嶄綔 */
+ handleUpdate(row) {
+ this.loading = true;
+ this.disabled = false;
+ this.reset();
+ const id = row.id || this.ids
+ getServer(id).then(response => {
+ this.loading = false;
+ this.form = response.data;
+ this.open = true;
+ this.title = "淇敼鏈嶅姟鍣�";
+ });
+ },
+ handleUpload(row) {
+ this.loading = true;
+ this.disabled = false;
+ this.reset();
+ getServer(row.id).then(response => {
+ this.loading = false;
+ this.form = response.data;
+ this.fileOpen = true;
+ });
+ },
+ /** 鎻愪氦鎸夐挳 */
+ submitForm() {
+ this.$refs["form"].validate(valid => {
+ if (valid) {
+ this.buttonLoading = true;
+ this.form.schoolId = this.schoolId;
+ if (this.form.id != null) {
+ updateServer(this.form).then(response => {
+ this.$modal.msgSuccess("淇敼鎴愬姛");
+ this.open = false;
+ this.fileOpen = false;
+ this.getList();
+ }).finally(() => {
+ this.buttonLoading = false;
+ });
+ } else {
+ addServer(this.form).then(response => {
+ this.$modal.msgSuccess("鏂板鎴愬姛");
+ this.open = false;
+ this.fileOpen = false;
+ this.getList();
+ }).finally(() => {
+ this.buttonLoading = false;
+ });
+ }
+ }
+ });
+ },
+ /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+ handleDelete(row) {
+ const ids = row.id || this.ids;
+ this.$modal.confirm('鏄惁纭鍒犻櫎鏈嶅姟鍣ㄧ紪鍙蜂负"' + ids + '"鐨勬暟鎹」锛�').then(() => {
+ this.loading = true;
+ return delServer(ids);
+ }).then(() => {
+ this.loading = false;
+ this.getList();
+ this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ }).finally(() => {
+ this.loading = false;
+ });
+ },
+ /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+ handleExport() {
+ this.download('oa/server/export', {
+ ...this.queryParams
+ }, `server_${new Date().getTime()}.xlsx`)
+ }
+ }
+};
+</script>
diff --git a/src/views/construction/system/index.vue b/src/views/construction/system/index.vue
new file mode 100644
index 0000000..f0ee5d2
--- /dev/null
+++ b/src/views/construction/system/index.vue
@@ -0,0 +1,449 @@
+<template>
+ <div class="app-container">
+ <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="90px">
+ <el-form-item label="杞欢鍚嶇О" prop="name">
+ <el-input
+ v-model="queryParams.name"
+ placeholder="璇疯緭鍏ヨ蒋浠跺悕绉�"
+ clearable
+ size="small"
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ <el-form-item label="杞戒綋鏈嶅姟鍣�" prop="serverId">
+ <server v-model="queryParams.serverId" :schoolId="schoolId"></server>
+ </el-form-item>
+ <el-form-item label="鏂藉伐鎵规" prop="constructionBatchId">
+ <construction-batch v-model="queryParams.constructionBatchId" :schoolId="schoolId"></construction-batch>
+ </el-form-item>
+ <el-form-item label="鐢熶骇鍘傚晢" prop="manufacturerId">
+ <manufacturer v-model="queryParams.manufacturerId"></manufacturer>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
+ <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
+ </el-form-item>
+ </el-form>
+
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <el-button
+ type="primary"
+ plain
+ icon="el-icon-plus"
+ size="mini"
+ @click="handleAdd"
+ v-hasPermi="['oa:system:add']"
+ >鏂板
+ </el-button>
+ </el-col>
+ <el-col :span="1.5">
+ <el-button
+ type="success"
+ plain
+ icon="el-icon-edit"
+ size="mini"
+ :disabled="single"
+ @click="handleUpdate"
+ v-hasPermi="['oa:system:edit']"
+ >淇敼
+ </el-button>
+ </el-col>
+ <el-col :span="1.5">
+ <el-button
+ type="danger"
+ plain
+ icon="el-icon-delete"
+ size="mini"
+ :disabled="multiple"
+ @click="handleDelete"
+ v-hasPermi="['oa:system:remove']"
+ >鍒犻櫎
+ </el-button>
+ </el-col>
+ </el-row>
+
+ <el-table v-loading="loading" :data="systemList" @selection-change="handleSelectionChange">
+ <el-table-column type="selection" width="55" align="center"/>
+ <el-table-column label="搴忓彿" type="index" align="center">
+ <template slot-scope="scope">
+ <span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="杞欢鍚嶇О" align="center" prop="name"/>
+ <el-table-column label="鐗堟湰" align="center" prop="edition"/>
+ <el-table-column label="鍔熻兘鎻忚堪" align="center" prop="functionDescription"/>
+ <el-table-column label="鎺堟潈鏂瑰紡" align="center" prop="authorizationMethod_dictText"/>
+ <el-table-column label="鎺堟潈鏁伴噺" align="center" prop="authorizedQuantity"/>
+ <el-table-column label="杞戒綋鏈嶅姟鍣�" align="center" prop="serverId_dictText"/>
+ <el-table-column label="鏂藉伐鎵规" align="center" prop="constructionBatchId_dictText"/>
+ <el-table-column label="鐢熶骇鍘傚晢" align="center" prop="manufacturerId_dictText"/>
+ <el-table-column label="澶囨敞" align="center" prop="remarks"/>
+ <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
+ <template slot-scope="scope">
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-view"
+ @click="handleInfo(scope.row)"
+ >鏌ョ湅
+ </el-button>
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-edit"
+ @click="handleUpdate(scope.row)"
+ v-hasPermi="['oa:system:edit']"
+ >淇敼
+ </el-button>
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-folder"
+ @click="handleUpload(scope.row)"
+ >闄勪欢
+ </el-button>
+ <el-button
+ size="mini"
+ type="text"
+ class="del-btn"
+ icon="el-icon-delete"
+ @click="handleDelete(scope.row)"
+ v-hasPermi="['oa:system:remove']"
+ >鍒犻櫎
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <pagination
+ v-show="total>0"
+ :total="total"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="getList"
+ />
+
+ <!-- 娣诲姞鎴栦慨鏀硅蒋浠剁郴缁熷璇濇 -->
+ <el-dialog :title="title" :visible.sync="open" width="700px" :append-to-body="true" :close-on-click-modal="false">
+ <el-form ref="form" :model="form" :rules="rules" label-width="100px" :disabled="disabled">
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="杞欢鍚嶇О" prop="name">
+ <el-input v-model="form.name" maxlength="64" show-word-limit placeholder="璇疯緭鍏ヨ蒋浠跺悕绉�"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鐗堟湰" prop="edition">
+ <el-input v-model="form.edition" maxlength="64" show-word-limit placeholder="璇疯緭鍏ョ増鏈�"/>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-form-item label="鍔熻兘鎻忚堪" prop="functionDescription">
+ <el-input v-model="form.functionDescription" :rows="8" maxlength="64" show-word-limit type="textarea"
+ placeholder="璇疯緭鍏ュ唴瀹�"/>
+ </el-form-item>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="鎺堟潈鏂瑰紡" prop="authorizationMethod">
+ <el-select v-model="form.authorizationMethod" placeholder="璇烽�夋嫨鎺堟潈鏂瑰紡">
+ <el-option
+ v-for="dict in dict.type.DICT116"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鎺堟潈鏁伴噺" prop="authorizedQuantity">
+ <el-input v-model="form.authorizedQuantity" maxlength="64" show-word-limit placeholder="璇疯緭鍏ユ巿鏉冩暟閲�"/>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-form-item label="杞戒綋鏈嶅姟鍣�" prop="serverId">
+ <server v-if="open" v-model="form.serverId" :schoolId="schoolId"/>
+ </el-form-item>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="鏂藉伐鎵规" prop="constructionBatchId">
+ <constructionBatch v-if="open" v-model="form.constructionBatchId"
+ :schoolId="schoolId"></constructionBatch>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鐢熶骇鍘傚晢" prop="manufacturerId">
+ <manufacturer v-model="form.manufacturerId"></manufacturer>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-form-item label="澶囨敞" prop="remarks">
+ <el-input v-model="form.remarks" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�"/>
+ </el-form-item>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button :loading="buttonLoading" :disabled="disabled" type="primary" @click="submitForm">纭� 瀹�</el-button>
+ <el-button @click="cancel">鍙� 娑�</el-button>
+ </div>
+ </el-dialog>
+
+ <!-- 闄勪欢 -->
+ <Dialog title="闄勪欢" :visible.sync="fileOpen" width="500px" :append-to-body="true" :destroy-on-close="true">
+ <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+ <el-form-item label="闄勪欢" prop="filePath">
+ <fileUpload v-model="form.filePath" :limit="1"/>
+ </el-form-item>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button :loading="buttonLoading" type="primary" @click="submitForm">纭� 瀹�</el-button>
+ <el-button @click="cancel">鍙� 娑�</el-button>
+ </div>
+ </Dialog>
+ </div>
+</template>
+
+<script>
+import {listSystem, getSystem, delSystem, addSystem, updateSystem} from "@/api/oa/system";
+import building from "../../components/building";
+import organization from "../../components/organization";
+import constructionBatch from "../../components/constructionBatch";
+import manufacturer from "../../components/manufacturer";
+import nvr from "../../components/nvr";
+import server from '../../components/server'
+
+export default {
+ name: "System",
+ dicts: ['DICT116'],
+ components: {
+ building,
+ organization,
+ constructionBatch,
+ manufacturer,
+ nvr,
+ server
+ },
+ props: {
+ schoolId: {
+ type: Number,
+ default: undefined
+ }
+ },
+ data() {
+ return {
+ // 鎸夐挳loading
+ buttonLoading: false,
+ // 閬僵灞�
+ loading: true,
+ // 閫変腑鏁扮粍
+ ids: [],
+ // 闈炲崟涓鐢�
+ single: true,
+ // 闈炲涓鐢�
+ multiple: true,
+ // 鏄剧ず鎼滅储鏉′欢
+ showSearch: true,
+ // 鎬绘潯鏁�
+ total: 0,
+ // 杞欢绯荤粺琛ㄦ牸鏁版嵁
+ systemList: [],
+ // 寮瑰嚭灞傛爣棰�
+ title: "",
+ // 鏄惁鏄剧ず寮瑰嚭灞�
+ open: false,
+ // 鏌ヨ鍙傛暟
+ queryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ schoolId: undefined,
+ name: undefined,
+ serverId: undefined,
+ constructionBatchId: undefined,
+ manufacturerId: undefined,
+ },
+ // 琛ㄥ崟鍙傛暟
+ form: {},
+ // 琛ㄥ崟鏍¢獙
+ rules: {
+ id: [
+ {required: true, message: "涓嶈兘涓虹┖", trigger: "blur"}
+ ],
+ schoolId: [
+ {required: true, message: "楂樻牎涓嶈兘涓虹┖", trigger: "blur"}
+ ],
+ name: [
+ {required: true, message: "杞欢鍚嶇О涓嶈兘涓虹┖", trigger: "blur"}
+ ],
+ edition: [
+ {required: true, message: "鐗堟湰涓嶈兘涓虹┖", trigger: "blur"}
+ ],
+ functionDescription: [
+ {required: true, message: "鍔熻兘鎻忚堪涓嶈兘涓虹┖", trigger: "blur"}
+ ],
+ authorizationMethod: [
+ {required: true, message: "鎺堟潈鏂瑰紡涓嶈兘涓虹┖", trigger: "blur"}
+ ],
+ authorizedQuantity: [
+ {required: true, message: "鎺堟潈鏁伴噺涓嶈兘涓虹┖", trigger: "blur"}
+ ],
+ serverId: [
+ {required: true, message: "杞戒綋鏈嶅姟鍣ㄤ笉鑳戒负绌�", trigger: "blur"}
+ ],
+ constructionBatchId: [
+ {required: true, message: "鏂藉伐鎵规涓嶈兘涓虹┖", trigger: "blur"}
+ ],
+ },
+ disabled: false,
+ fileOpen: false
+ };
+ },
+ created() {
+ this.getList();
+ },
+ methods: {
+ /** 鏌ヨ杞欢绯荤粺鍒楄〃 */
+ getList() {
+ this.loading = true;
+ listSystem(Object.assign({}, this.queryParams, {schoolId: this.schoolId})).then(response => {
+ this.systemList = response.rows;
+ this.total = response.total;
+ this.loading = false;
+ });
+ },
+ // 鍙栨秷鎸夐挳
+ cancel() {
+ this.open = false;
+ this.fileOpen = false;
+ this.reset();
+ },
+ // 琛ㄥ崟閲嶇疆
+ reset() {
+ this.form = {
+ id: undefined,
+ schoolId: undefined,
+ name: undefined,
+ edition: undefined,
+ functionDescription: undefined,
+ authorizationMethod: undefined,
+ authorizedQuantity: undefined,
+ serverId: undefined,
+ constructionBatchId: undefined,
+ manufacturerId: undefined,
+ remarks: undefined,
+ filePath: undefined,
+ createBy: undefined,
+ createTime: undefined,
+ updateBy: undefined,
+ updateTime: undefined,
+ delFlag: undefined
+ };
+ this.resetForm("form");
+ },
+ /** 鎼滅储鎸夐挳鎿嶄綔 */
+ handleQuery() {
+ this.queryParams.pageNum = 1;
+ this.getList();
+ },
+ /** 閲嶇疆鎸夐挳鎿嶄綔 */
+ resetQuery() {
+ this.resetForm("queryForm");
+ this.handleQuery();
+ },
+ // 澶氶�夋閫変腑鏁版嵁
+ handleSelectionChange(selection) {
+ this.ids = selection.map(item => item.id)
+ this.single = selection.length !== 1
+ this.multiple = !selection.length
+ },
+ /** 鏂板鎸夐挳鎿嶄綔 */
+ handleAdd() {
+ this.reset();
+ this.disabled = false;
+ this.open = true;
+ this.title = "娣诲姞杞欢绯荤粺";
+ },
+ handleInfo(row) {
+ this.loading = true;
+ this.disabled = true;
+ this.reset();
+ getSystem(row.id).then(response => {
+ this.loading = false;
+ this.form = response.data;
+ this.open = true;
+ this.title = "杞欢绯荤粺璇︽儏";
+ });
+ },
+ /** 淇敼鎸夐挳鎿嶄綔 */
+ handleUpdate(row) {
+ this.loading = true;
+ this.disabled = false;
+ this.reset();
+ const id = row.id || this.ids
+ getSystem(id).then(response => {
+ this.loading = false;
+ this.form = response.data;
+ this.open = true;
+ this.title = "淇敼杞欢绯荤粺";
+ });
+ },
+ handleUpload(row) {
+ this.loading = true;
+ this.disabled = false;
+ this.reset();
+ getSystem(row.id).then(response => {
+ this.loading = false;
+ this.form = response.data;
+ this.fileOpen = true;
+ });
+ },
+ /** 鎻愪氦鎸夐挳 */
+ submitForm() {
+ this.$refs["form"].validate(valid => {
+ if (valid) {
+ this.buttonLoading = true;
+ this.form.schoolId = this.schoolId;
+ if (this.form.id != null) {
+ updateSystem(this.form).then(response => {
+ this.$modal.msgSuccess("淇敼鎴愬姛");
+ this.open = false;
+ this.fileOpen = false;
+ this.getList();
+ }).finally(() => {
+ this.buttonLoading = false;
+ });
+ } else {
+ addSystem(this.form).then(response => {
+ this.$modal.msgSuccess("鏂板鎴愬姛");
+ this.open = false;
+ this.fileOpen = false;
+ this.getList();
+ }).finally(() => {
+ this.buttonLoading = false;
+ });
+ }
+ }
+ });
+ },
+ /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+ handleDelete(row) {
+ const ids = row.id || this.ids;
+ this.$modal.confirm('鏄惁纭鍒犻櫎杞欢绯荤粺缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�').then(() => {
+ this.loading = true;
+ return delSystem(ids);
+ }).then(() => {
+ this.loading = false;
+ this.getList();
+ this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ }).finally(() => {
+ this.loading = false;
+ });
+ },
+ /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+ handleExport() {
+ this.download('oa/system/export', {
+ ...this.queryParams
+ }, `system_${new Date().getTime()}.xlsx`)
+ }
+ }
+};
+</script>
diff --git a/vue.config.js b/vue.config.js
index 4358146..b3ac9e8 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -34,7 +34,7 @@
// detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: {
// target: `http://101.35.174.42:8082`,
- target: `http://localhost:8080`,
+ target: `http://localhost:8081`,
changeOrigin: true,
pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: ''
--
Gitblit v1.9.1