From ad22765071f05ddf543dd531c019f35e9fca6682 Mon Sep 17 00:00:00 2001
From: gaoshp <291585735@qq.com>
Date: 星期日, 23 六月 2024 23:46:27 +0800
Subject: [PATCH] update
---
src/views/console/basic-data/tpmComp2.vue | 557 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/components/scFormTable/index.vue | 7
src/views/console/basic-data/tpm-data.vue | 8
3 files changed, 567 insertions(+), 5 deletions(-)
diff --git a/src/components/scFormTable/index.vue b/src/components/scFormTable/index.vue
index 9e7649c..f8cc689 100644
--- a/src/components/scFormTable/index.vue
+++ b/src/components/scFormTable/index.vue
@@ -4,12 +4,12 @@
* @Author: sakuya
* @Date: 2023骞�2鏈�9鏃�12:32:26
* @LastEditors: Sneed
- * @LastEditTime: 2024-04-17 22:09:27
+ * @LastEditTime: 2024-06-23 22:43:27
-->
<template>
<div class="sc-form-table" ref="scFormTable">
- <el-table :data="data" ref="table" border stripe>
+ <el-table :data="data" ref="table" border stripe @row-click="rowClick">
<el-table-column type="index" width="50" fixed="left">
<template #header>
<el-button v-if="!hideAdd" type="primary" icon="el-icon-plus" size="small" circle
@@ -119,6 +119,9 @@
//鏍规嵁index鍒犻櫎
deleteRow(index) {
this.data.splice(index, 1)
+ },
+ rowClick(row) {
+ this.$emit('row-click', row)
}
}
}
diff --git a/src/views/console/basic-data/tpm-data.vue b/src/views/console/basic-data/tpm-data.vue
index 5645e48..b72de24 100644
--- a/src/views/console/basic-data/tpm-data.vue
+++ b/src/views/console/basic-data/tpm-data.vue
@@ -1,7 +1,7 @@
<!--
* @Date: 2024-06-16 19:47:41
* @LastEditors: Sneed
- * @LastEditTime: 2024-06-23 19:59:13
+ * @LastEditTime: 2024-06-23 21:32:29
* @FilePath: /belleson-frontend/Users/mache/Documents/demo/cps-web/src/views/console/basic-data/tpm-data.vue
-->
<template>
@@ -42,7 +42,7 @@
</el-container>
</el-tab-pane>
<el-tab-pane label="鏈哄櫒绫诲瀷" name="4">
-
+ <tpmComp2 />
</el-tab-pane>
</el-tabs>
</el-card>
@@ -54,11 +54,13 @@
import Header from './tpm-data-header.vue'
import TpmData1 from './tpm-data1.vue'
import tpmComp1 from './tpmComp1.vue'
+import tpmComp2 from './tpmComp2.vue'
export default {
components: {
Header,
TpmData1,
- tpmComp1
+ tpmComp1,
+ tpmComp2
},
data() {
return {
diff --git a/src/views/console/basic-data/tpmComp2.vue b/src/views/console/basic-data/tpmComp2.vue
new file mode 100644
index 0000000..52aa6a5
--- /dev/null
+++ b/src/views/console/basic-data/tpmComp2.vue
@@ -0,0 +1,557 @@
+<!--
+ * @Date: 2024-06-23 21:32:05
+ * @LastEditors: Sneed
+ * @LastEditTime: 2024-06-23 23:45:09
+ * @FilePath: /belleson-frontend/Users/mache/Documents/demo/cps-web/src/views/console/basic-data/tpmComp2.vue
+-->
+<template>
+ <el-conatiner>
+ <el-header>
+ <el-button type="primary" @click="addNew">鏂板缓</el-button>
+ <import-table style="margin:0 8px" :exportUrl="exportUrlTpl" :uploadUrl="uploadUrl"></import-table>
+ <el-button type="primary" @click="exportData">瀵煎嚭</el-button>
+ <el-popconfirm width="220" cancel-button-text="鍋滅敤" confirm-button-text="鍒犻櫎"
+ title="鍒犻櫎鏁版嵁浼氬奖鍝嶅凡鍏宠仈鐨勪笟鍔� ,鑻ユ偍鎯冲湪宸插叧鑱旂殑涓氬姟涓緷鐒舵樉绀鸿繖浜涙暟鎹�, 鎮ㄥ彲浠ラ�夋嫨 鍋滅敤 鎿嶄綔銆傚仠鐢ㄥ悗姝ゆ暟鎹皢涓嶈兘鍐嶈鏂颁笟鍔′娇鐢ㄣ��"
+ @confirm="table_del(selection, '0')" @cancel="table_del(selection, '1')">
+ <template #reference>
+ <el-button :disabled="selection.length == 0" type="danger" plain icon="el-icon-delete"></el-button>
+ </template>
+ </el-popconfirm>
+ <el-select v-model="params.status" placeholder="璇烽�夋嫨" style="width: 240px;margin-left: auto;">
+ <template #prefix><span style="margin-right: 6px;">鐘舵��</span></template>
+ <el-option key="0" label="鍋滅敤" :value="0" />
+ <el-option key="1" label="鍚敤" :value="1" />
+ </el-select>
+ <el-input style="width: 240px;margin-left: 8px;" v-model="params.keyWord" placeholder="璇疯緭鍏ユ绱㈠唴瀹�"></el-input>
+ <el-button @click="search" style="margin-left: 8px;" type="primary" icon="el-icon-search"></el-button>
+ <scDialog v-model="visible">
+ <scForm v-if="visible" ref="form" :config="config" :rules="rules" v-model="form" @submit="submit">
+ </scForm>
+ </scDialog>
+ </el-header>
+ <el-main>
+ <scTable ref="table" @selection-change="handleSelectionChange" row-key="id" border :apiObj="apiObj" stripe
+ @dataChange="dataChange">
+ <el-table-column type="selection" width="55" />
+ <el-table-column prop="code" label="鏈哄櫒绫诲瀷缂栧彿" />
+ <el-table-column prop="name" label="鏈哄櫒绫诲瀷鍚嶇О" />
+ <el-table-column prop="remark" label="澶囨敞" />
+ <el-table-column prop="statusName" label="鐘舵��" />
+ <el-table-column label="鎿嶄綔" fixed="right" align="left" width="170">
+ <template #default="scope">
+ <el-button-group>
+ <el-button text type="primary" size="small"
+ @click="viewCheck(scope.row, scope.$index)">鐐规椤圭洰</el-button>
+ <el-button text type="primary" size="small"
+ @click="viewM(scope.row, scope.$index)">淇濆吇椤圭洰</el-button>
+ <el-button text type="primary" size="small"
+ @click="table_edit(scope.row, scope.$index)">缂栬緫</el-button>
+ <el-popconfirm width="220" cancel-button-text="鍋滅敤" confirm-button-text="鍒犻櫎"
+ title="鍒犻櫎鏁版嵁浼氬奖鍝嶅凡鍏宠仈鐨勪笟鍔� ,鑻ユ偍鎯冲湪宸插叧鑱旂殑涓氬姟涓緷鐒舵樉绀鸿繖浜涙暟鎹�, 鎮ㄥ彲浠ラ�夋嫨 鍋滅敤 鎿嶄綔銆傚仠鐢ㄥ悗姝ゆ暟鎹皢涓嶈兘鍐嶈鏂颁笟鍔′娇鐢ㄣ��"
+ @confirm="table_del([scope.row], '0')" @cancel="table_del([scope.row], '1')">
+ <template #reference>
+ <el-button type="danger" text size="small">鍒犻櫎</el-button>
+ </template>
+ </el-popconfirm>
+ </el-button-group>
+ </template>
+ </el-table-column>
+ </scTable>
+ </el-main>
+ <scDialog v-model="visibleCheck">
+ <scFormTable ref="table1" v-model="tabledata" stripe hideDelete :addTemplate="addTemplate"
+ @row-click="getCheckListChild">
+ <el-table-column label="鐐规椤圭洰缂栧彿" prop="code">
+ <template #default="scope">
+ <el-select v-if="scope.row.isEdit" v-model="scope.row.checkProjectId" style="width: 100%;"
+ @change="changeCheck">
+ <el-option v-for="(item, index) in options" :key="index" :label="item.code"
+ :value="item.id">{{ item.code }}</el-option>
+ </el-select>
+ <span v-else>{{ scope.row.code }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="鐐规椤圭洰鍚嶇О" prop="code">
+ <template #default="scope">
+ <el-select v-if="scope.row.isEdit" v-model="scope.row.checkProjectId" style="width: 100%;">
+ <el-option v-for="(item, index) in options" :key="index" :label="item.name"
+ :value="item.id">{{ item.name }}</el-option>
+ </el-select>
+ <span v-else>{{ scope.row.name }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="澶囨敞" prop="code">
+ <template #default="scope">
+ <el-select v-if="scope.row.isEdit" v-model="scope.row.checkProjectId" style="width: 100%;">
+ <el-option v-for="(item, index) in options" :key="index" :label="item.remark"
+ :value="item.id">{{ item.remark }}</el-option>
+ </el-select>
+ <span v-else>{{ scope.row.remark }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="鐐规鍛ㄦ湡" prop="code">
+ <template #default="scope">
+ <el-input-number v-model="scope.row.intervalTime" v-if="scope.row.isEdit" :min="0" />
+ <span v-else>{{ scope.row.intervalTime }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="鎿嶄綔" prop="state" width="120">
+ <template #default="scope">
+ <el-button-group>
+ <el-button v-show="!scope.row.id || scope.row.isEdit" text type="primary" size="small"
+ @click="addCheck(scope.row)">淇濆瓨</el-button>
+ <el-button v-show="!scope.row.id || scope.row.isEdit" text type="primary" size="small"
+ @click="cancelCheck(scope.row, scope.$index)">鍙栨秷</el-button>
+ <el-popconfirm width="220" title="纭畾灏嗛�夋嫨鐨勬暟鎹垹闄�" @confirm="delCheck(scope.row)">
+ <template #reference>
+ <el-button v-show="!scope.row.isEdit" text type="primary"
+ size="small">鍒犻櫎</el-button>
+ </template>
+ </el-popconfirm>
+ </el-button-group>
+
+ </template>
+ </el-table-column>
+ </scFormTable>
+ <p style="margin: 10px 0;">鐐规椤�</p>
+ <el-table :data="tableDataList" style="width: 100%; margin-bottom: 20px" row-key="id" border
+ default-expand-all>
+ <el-table-column prop="name" label="鐐规椤瑰悕绉�" />
+ <el-table-column prop="valueType" label="鏁板�肩被鍨�" />
+ <el-table-column prop="requirement" label="鐐规瑕佹眰" />
+ <el-table-column prop="standardValue" label="鏍囧噯鏁板��" />
+ </el-table>
+ </scDialog>
+ <!-- 淇濆吇椤圭洰 -->
+ <scDialog v-model="visibleMaintain">
+ <scFormTable ref="table1" v-model="talbeDataM" stripe hideDelete :addTemplate="addTemplateM"
+ @row-click="getMlistChild">
+ <el-table-column label="淇濆吇椤圭洰缂栧彿" prop="code">
+ <template #default="scope">
+ <el-input v-if="scope.row.isEdit" v-model="scope.row.code"></el-input>
+ <span v-else>{{ scope.row.code }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="淇濆吇椤圭洰鍚嶇О" prop="deviceTypeName">
+ <template #default="scope">
+ <el-input v-if="scope.row.isEdit" v-model="scope.row.deviceTypeName"></el-input>
+ <span v-else>{{ scope.row.deviceTypeName }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="淇濆吇鍛ㄦ湡锛堝ぉ锛�" prop="intervalTime">
+ <template #default="scope">
+ <el-input-number style="width: 120px" v-model="scope.row.intervalTime" v-if="scope.row.isEdit"
+ :min="0" />
+ <span v-else>{{ scope.row.intervalTime }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="淇濆吇棰勮鎻愮ず锛堝ぉ锛�" prop="preWarningDays">
+ <template #default="scope">
+ <el-input-number style="width: 120px" v-model="scope.row.preWarningDays" v-if="scope.row.isEdit"
+ :min="0" />
+ <span v-else>{{ scope.row.preWarningDays }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="澶囨敞" prop="remark">
+ <template #default="scope">
+ <el-input v-if="scope.row.isEdit" v-model="scope.row.remark"></el-input>
+ <span v-else>{{ scope.row.remark }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="鎿嶄綔" prop="state" width="120">
+ <template #default="scope">
+ <el-button-group>
+ <el-button v-show="!scope.row.id || scope.row.isEdit" text type="primary" size="small"
+ @click="addM(scope.row)">淇濆瓨</el-button>
+ <el-button v-show="!scope.row.id || scope.row.isEdit" text type="primary" size="small"
+ @click="cancelCheck(scope.row, scope.$index)">鍙栨秷</el-button>
+ <el-popconfirm width="220" title="纭畾灏嗛�夋嫨鐨勬暟鎹垹闄�" @confirm="delM(scope.row)">
+ <template #reference>
+ <el-button v-show="!scope.row.isEdit" text type="primary"
+ size="small">鍒犻櫎</el-button>
+ </template>
+ </el-popconfirm>
+ </el-button-group>
+
+ </template>
+ </el-table-column>
+ </scFormTable>
+ <p style="margin: 10px 0">
+ 淇濆吇椤�
+ <el-button @click="addMC">娣诲姞</el-button>
+ </p>
+ <el-table :data="talbeDataMChild" style="width: 100%; margin-bottom: 20px" row-key="id" border
+ default-expand-all>
+ <el-table-column prop="itemCode" label="淇濆吇椤圭紪鍙�" />
+ <el-table-column prop="itemName" label="淇濆吇椤瑰悕绉�" />
+ <el-table-column prop="itemRequirement" label="淇濆吇瑕佹眰" />
+ <el-table-column prop="itemRemark" label="澶囨敞" />
+ <el-table-column label="鎿嶄綔" prop="state" width="120">
+ <template #default="scope">
+ <el-button-group>
+ <el-popconfirm width="220" title="纭畾灏嗛�夋嫨鐨勬暟鎹垹闄�" @confirm="delMChild(scope.row)">
+ <template #reference>
+ <el-button text type="primary" size="small">鍒犻櫎</el-button>
+ </template>
+ </el-popconfirm>
+ </el-button-group>
+
+ </template>
+ </el-table-column>
+ </el-table>
+ </scDialog>
+ <scDialog v-model="visibleAdd">
+ <el-select v-model="itemId" style="width: 100%;">
+ <el-option v-for=" (item, index) in options1" :key="index" :label="item.code" :value="item.id">{{
+ item.code
+ }}</el-option>
+ </el-select>
+ <template #footer>
+ <div>
+ <el-button type="primary" @click="saveAdd">纭畾</el-button>
+ </div>
+ </template>
+
+ </scDialog>
+ </el-conatiner>
+</template>
+
+<script>
+import importTable from '@/layout/components/importTable.vue'
+export default {
+ components: {
+ importTable,
+ },
+ data() {
+ return {
+ params: {
+ keyWord: '',
+ status: 1,
+ },
+ exportUrlTpl: '/api/blade-cps/device-types/export/template',
+ uploadUrl: '/api/blade-cps/device-types/excel/import',
+ visible: false,
+ config: {
+ labelWidth: 120,
+ formItems: [
+ {
+ component: 'input',
+ label: '鏈哄櫒绫诲瀷缂栧彿',
+ name: 'code',
+ options: {
+ placeholder: '',
+ maxlength: 100,
+ }
+ },
+ {
+ component: 'input',
+ label: '鏈哄櫒绫诲瀷鍚嶇О',
+ name: 'name',
+ options: {
+ multiple: false,
+ data: []
+ },
+ disabled: false
+ },
+ {
+ component: 'input',
+ label: '澶囨敞',
+ name: 'remark',
+ type: 'textarea',
+ options: {
+ multiple: false,
+ data: []
+ },
+ disabled: false
+ },
+ {
+ component: 'select',
+ label: '鐘舵��',
+ name: 'status',
+ options: {
+ multiple: false,
+ items: [
+ {
+ value: 1,
+ label: '鍚敤'
+ },
+ {
+ value: 0,
+ label: '鍋滅敤'
+ },
+ ]
+ },
+ disabled: false
+ }
+ ]
+ },
+ rules: {
+ code: [
+ { required: true, message: '璇疯緭鍏�' },
+ ],
+ name: [
+ { required: true, message: '璇疯緭鍏�' },
+ ]
+ },
+ form: {},
+ apiObj: {
+ get: async (data) => {
+ let params = {
+ ...data,
+ ...this.params
+ }
+ return await this.$HTTP.get(`/api/blade-cps/device-types/page`, {}, { params }).then(res => {
+ res.data.records = res?.data?.records.map(v => {
+ return {
+ ...v,
+ statusName: v.status ? '鍚敤' : '绂佺敤'
+ }
+ })
+ return res
+ })
+ }
+ },
+ selection: [],
+ visibleCheck: false,
+ selectRow: {},
+ options: [],
+ tabledata: [],
+ addTemplate: {
+ checkProjectId: '',
+ intervalTime: '',
+ isEdit: true
+ },
+ tableDataList: [],
+ // baoyang
+ visibleMaintain: false,
+ addTemplateM: {
+ isEdit: true,
+ },
+ talbeDataM: [],
+ talbeDataMChild: [],
+ options1: [],
+ visibleAdd: false,
+ itemId: '',
+ selectMRow: {}
+ }
+ },
+ created() {
+ this.init()
+ },
+ methods: {
+ init() {
+ this.$HTTP.get(`/api/blade-cps/check-project/page?key=¤t=1&size=-1`).then(res => {
+ this.options = res.data.records
+ })
+ this.$HTTP.get(`/api/blade-cps/maintain-item/list?keyWord=`).then(res => {
+ this.options1 = res.data
+ })
+ },
+ handleSelectionChange(selection) {
+ this.selection = selection
+ },
+ addNew() {
+ this.config.formItems[0].disabled = false
+ this.form = {
+ status: 1,
+ }
+ this.visible = true
+ },
+ exportData() {
+ this.$HTTP.post(`/api/blade-cps/device-types/excel/export`, {}, { params: this.params }).then(res => {
+ if (res.success) {
+ window.open(res.data.link)
+ }
+ })
+ },
+ search() {
+ this.$refs.table.reload()
+ },
+ table_del(selection, type) {
+ this.$HTTP.delete(`/api/blade-cps/device-types?type=${type}`, {}, {
+ data: {
+ idList: selection.map(v => v.id),
+ }
+ }).then(res => {
+ if (res.success) {
+ this.search()
+ } else {
+ this.$message.error(res.msg)
+ }
+ })
+ },
+ table_edit(row) {
+ this.config.formItems[0].disabled = true
+ this.form = {
+ ...row
+ }
+ this.visible = true
+ },
+ submit() {
+ if (!this.form.id) {
+ this.$HTTP.post(`/api/blade-cps/device-types`, this.form).then(res => {
+ if (res.success) {
+ this.visible = false
+ this.search()
+ }
+ })
+ } else {
+ this.$HTTP.put(`/api/blade-cps/device-types`, this.form).then(res => {
+ if (res.success) {
+ this.visible = false
+ this.search()
+ }
+ })
+ }
+
+ },
+ viewCheck(row) {
+ this.selectRow = row
+
+ this.getCheckList().then(res => {
+ this.visibleCheck = true
+ this.tableDataList = []
+ })
+ },
+ getCheckList() {
+ let row = this.selectRow
+ return this.$HTTP.get(`/api/blade-cps/device-type-check-projects/page?id=${row.id}`).then(res => {
+ if (res.success) {
+ this.tabledata = res.data
+ this.getCheckListChild(this.tabledata[0])
+ } else {
+ this.tabledata = []
+ }
+ })
+ },
+ getCheckListChild(row) {
+ if (!row?.checkProjectId) return this.tableDataList = []
+ this.$HTTP.get(`/api/blade-cps/check-item/list?projectId=${row.checkProjectId}`).then(res => {
+ if (res.success) {
+ this.tableDataList = res.data
+ } else {
+ this.tableDataList = []
+ }
+ })
+ },
+ changeCheck(val) {
+ this.getCheckListChild({ checkProjectId: val })
+ },
+ cancelCheck(row, index) {
+ row.isEdit = false
+ this.tabledata.splice(index, 1)
+ },
+ delCheck(row) {
+ this.$HTTP.delete(`/api/blade-cps/device-type-check-projects`, {}, {
+ data: {
+ ids: [row.id]
+ }
+ }).then(res => {
+ if (res.success) {
+ this.getCheckList()
+ }
+ })
+ },
+ addCheck(row) {
+ this.$HTTP.post(`/api/blade-cps/device-type-check-projects`, {
+ deviceTypeId: this.selectRow.id,
+ checkProjectId: [row.checkProjectId],
+ intervalTime: row.intervalTime
+ }).then(res => {
+ if (res.success) {
+ this.getCheckList()
+ } else {
+ this.$message.error(res.msg)
+ }
+ })
+ },
+ // 淇濆吇
+ viewM(row) {
+ this.selectRow = row
+ this.getMList().then(res => {
+ this.visibleMaintain = true
+ this.tableDataList = []
+ })
+ },
+ getMList() {
+ return this.$HTTP.get(`/api/blade-cps/maintain-project/list?deviceTypeId=${this.selectRow.id}`).then(res => {
+ if (res.success) {
+ this.talbeDataM = res.data
+ this.getMlistChild(this.talbeDataM?.[0])
+ } else {
+ this.talbeDataM = []
+ }
+ })
+ },
+ getMlistChild(row) {
+ this.selectMRow = row
+ if (!row?.id) return this.talbeDataMChild = []
+ this.$HTTP.get(`/api/blade-cps/maintain-project-item/item-list?projectId=${row.id}`).then(res => {
+ if (res) {
+ this.talbeDataMChild = res
+ } else {
+ this.talbeDataMChild = []
+ }
+ })
+ },
+ //
+ addM(row) {
+ this.$HTTP.post(`/api/blade-cps/maintain-project/create-maintain-project`, {
+ code: row.code,
+ deviceTypeId: this.selectRow.id,
+ deviceTypeName: row.deviceTypeName,
+ name: row.deviceTypeName,
+ intervalTime: row.intervalTime,
+ preWarningDays: row.preWarningDays,
+ remark: row.remark
+ }).then(res => {
+ if (res.success) {
+ this.getMList()
+ } else {
+ this.$message.error(res.msg)
+ }
+ })
+ },
+ delM(row) {
+ this.$HTTP.post(`/api/blade-cps/maintain-project/delete-maintain-project`, {}, {
+ params: {
+ id: row.id
+ }
+ }).then(res => {
+ if (res.success) {
+ this.getMList()
+ }
+ })
+ },
+
+ delMChild(row) {
+ this.$HTTP.post(`/api/blade-cps/maintain-project-item/delete-maintain-project-item?id=${row.id}`).then(res => {
+ if (res.success) {
+ this.getMlistChild(this.selectMRow)
+ } else {
+ this.$message.errror(res.msg)
+ }
+ })
+ },
+ addMC() {
+ this.itemId = ''
+ this.visibleAdd = true
+ },
+ saveAdd() {
+ this.$HTTP.post(`/api/blade-cps/maintain-project-item/create-maintain-project-item`, {
+ itemId: this.itemId,
+ projectId: this.selectMRow.id
+ }).then(res => {
+ if (res.success) {
+ this.visibleAdd = false
+ this.getMlistChild(this.selectMRow)
+ } else {
+ this.$message.errror(res.msg)
+ }
+ })
+ }
+ },
+}
+</script>
+
+<style lang="scss" scoped></style>
\ No newline at end of file
--
Gitblit v1.9.3