vxe編輯保存表格

業務需求:

? ? ? ? 1、需要點擊編輯時,全部表格顯示編輯框,點擊保存,全部保存。

? ? ? ? 2、因為位置問題,產品經理把24小時分成了兩行,開發就得分兩個表格。列標題是寫死的,文字偏移也是寫死的,其他數據后臺返回,兩個表用了一個數據源。

columns使用了循環,?edit-config?設置了 autoClear 屬性為 false,在用戶輸入時,編輯器不會自動清除文本框中的內容。使用了默認插槽,v-if else顯示輸入框

?

        <div class="tableInfo"><div class="header"><div class="title">xxxx</div><div class="rightBtn"><el-button type="primary" @click="editTableTempUp()" v-if="edit">編輯</el-button><el-button type="primary" @click="clearEditTempUp()" v-if="!edit">保存</el-button></div></div><vxe-table ref="tableRefTempUp1" :data="tableDataTempUp" border height="100px" :column-config="{resizable: true}" :row-config="{ useKey: true }" stripe :menu-config="menuConfig" :edit-config="{ autoClear: false }"@menu-click="contextMenuClickEvent"><vxe-column v-for="(item, index) in columnDataHour1" :key="item.value" :field="item.value" show-overflow:edit-render="index === 0 ? null : { autofocus: '.vxe-input--inner' }" :title="item.name":align="index === 0 ? 'center' : 'right'" :width="index === 0 ? 60 : 68":fixed="index === 0 ? 'left' : (index === columnDataHour1.length - 1) ? 'right' : undefined"><template #default="{ row }"><span v-if="edit">{{ row[item.value] }}</span><vxe-input v-else-if="item.name !== '時間'" v-model="row[item.value]" type="float" placeholder="0.00":digits="2" :min="-10" :max="10"></vxe-input><span v-else>{{ row[item.value] }}</span></template></vxe-column></vxe-table><vxe-table ref="tableRefTempUp2" :data="tableDataTempUp" border height="100px" :column-config="{resizable: true}" :row-config="{ useKey: true }" stripe :auto-resize="true" :menu-config="menuConfig":edit-config="{ autoClear: false }" @menu-click="contextMenuClickEvent"><vxe-column v-for="(item, index) in columnDataHour2" :key="item.value" :field="item.value" show-overflow:edit-render="index === 0 ? null : { autofocus: '.vxe-input--inner' }" :title="item.name":align="index === 0 ? 'center' : 'right'" :width="index === 0 ? 60 : 68":fixed="index === 0 ? 'left' : (index === columnDataHour2.length - 1) ? 'right' : undefined"><template #default="{ row }"><span v-if="edit">{{ row[item.value] }}</span><vxe-input v-else-if="item.name !== '時間'" v-model="row[item.value]" type="float" placeholder="0.00":digits="2" :min="-10" :max="10"></vxe-input><span v-else>{{ row[item.value] }}</span></template></vxe-column></vxe-table></div>
<script lang='ts'>
import { reactive, toRefs, computed, watch, onMounted, onUnmounted } from 'vue'
import { getConTimeoffsetData, setConTimeoffsetData, getConTempTrend } from '@/api/RunMonitor/StationMonitor/controlStrategy';
import { ElMessage, ElMessageBox } from 'element-plus'
import moment from 'moment';
import { cloneDeep, sortBy, mean } from 'lodash-es'
import { Echart } from '@/components/Echart'
import { set } from 'lodash-es'
import { scatterChartOption, scatterChartOptionAvg } from './chartOptions.js'export default {components: {Echart,PatrolDialog,},emits: ['onClose'],setup(props, { emit }) {const state = reactive({// refechartsTempUp: null,tableRefTempUp1: null,tableRefTempUp2: null,chartLeftData: scatterChartOption,supTempLine: [],supTempPoint: [],avgTempLine: [],avgTempPoint: [],// datashow: false,edit: true,edit2: true,rowInfo: {}, // 點擊的行數據tableDataTempUp: [],tableDataTempAvg: [],resData: [], // 接口數據tableData: [], // table數據,倒序columnDataHour1: [{ name: '時間', value: 'getTime' },],columnDataHour2: [{ name: '時間', value: 'getTime' },],menuConfig: {className: 'my-menus',body: {options: [[{ code: 'refresh', name: '表格刷新' },// { code: 'exportCurrent', name: '導出當前頁', },]]},},} as any)const columnDataHour1 = computed(() => {for (let i = 0; i < 12; i++) {state.columnDataHour1.push({ name: `${i}時`, value: `h${i}` })}return state.columnDataHour1})const columnDataHour2 = computed(() => {for (let i = 12; i < 24; i++) {state.columnDataHour2.push({ name: `${i}時`, value: `h${i}` })}return state.columnDataHour2})const methods = {async open({ row }) {state.rowInfo = row;methods.getTableData()methods.getChartData()// 打開彈窗state.show = true;},// 編輯editTableTempUp() {state.edit = false;},// 取消編輯clearEditTempUp() {state.edit = true;// let tableData = state.tableRef.getTableData().tableData;let tableData = cloneDeep(state.tableDataTempUp);tableData.forEach(element => {for (let key in element) {if (element[key] === '') {element[key] = '0.00'}else if (key === 'conid') {element[key] = state.rowInfo?.conId} else if (key === 'mode') {element[key] = 0 // 供溫}}});delete tableData[0].getTimedelete tableData[0].getimemethods.setTableData(tableData[0])},// 獲取表格數據getTableData() {getConTimeoffsetData({conid: state.rowInfo?.conId,}).then(res => {if (res && res.data.length > 0) {// state.resData = res.data || [];let tableData = cloneDeep(res.data);tableData.forEach(item => {if (item.mode === 0) {// 0 表示供溫曲線;1表示均溫曲線for (let key in item) {if (!item[key] && item[key] !== 'conid' && item[key] !== 'getime' && item[key] !== 'mode') {item[key] = '0.00';} else {item[key] = Number(item[key]).toFixed(2);}}item.getTime = '偏移'state.tableDataTempUp = [item]} else {for (let key in item) {if (!item[key] && item[key] !== 'conid' && item[key] !== 'getime' && item[key] !== 'mode') {item[key] = '0.00';} else {item[key] = Number(item[key]).toFixed(2);}}item.getTime = '偏移'state.tableDataTempAvg = [item];}});} else {state.tableDataTempUp = [];state.tableDataTempAvg = [];}}).catch(e => {console.log(e)state.tableDataTempUp = [];state.tableDataTempAvg = [];})},// 設置表格數據setTableData(data) {setConTimeoffsetData(data).then(res => {if (res.code === '0') {ElMessage.success(res?.msg)methods.getTableData()} else {ElMessage.error(res?.msg)}}).catch(e => {console.log(e)ElMessage.error(e)})},// 獲取圖表數據getChartData() {getConTempTrend({conid: state.rowInfo?.conId,}).then(res => {if (res && res.data) {state.resData = cloneDeep(res.data);const supTemp = state.resData.supTempLine.concat(state.resData.supTempPoint)let supTempMax = Math.max(...supTemp.map(item => item.y));let supTempMin = Math.min(...supTemp.map(item => item.y));const yAxisSupMin = Math.round(supTempMin * 0.9)const yAxisSupMax = Math.round(supTempMax * 1.1)const seriesSupDataPoint = state.resData.supTempPoint.map(item => [item.x, item.y]);const seriesSupDataLine = state.resData.supTempLine.map(item => [item.x, item.y]);// 供溫set(state.chartLeftData, 'yAxis[0].min', yAxisSupMin)set(state.chartLeftData, 'yAxis[0].max', yAxisSupMax)set(state.chartLeftData, 'series[1]data', seriesSupDataPoint)set(state.chartLeftData, 'series[0]data', seriesSupDataLine)} else {state.resData = [];}}).catch(e => {console.log(e)state.resData = [];})},}return {...toRefs(state),...methods,columnDataHour1,columnDataHour2,}}
}
</script>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160090.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160090.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160090.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

服務器主機安全的重要性及防護策略

在數字化時代&#xff0c;服務器主機安全是任何組織都必須高度重視的問題。無論是大型企業還是小型企業&#xff0c;無論是政府機構還是個人用戶&#xff0c;都需要確保其服務器主機的安全&#xff0c;以防止數據泄露、網絡攻擊和系統癱瘓等嚴重后果。 一、服務器主機安全的重…

__int128類型movaps指令crash

結論 在使用__int128時&#xff0c;如果__int128類型的內存起始地址不是按16字節對齊的話&#xff0c;有些匯編指令會拋出SIGSEGV使程序crash。 malloc在64位系統中申請的內存地址&#xff0c;是按16字節對齊的&#xff0c;但一般使用時經常會申請一塊內存自己切割使用&#…

Qt的一個無邊界窗口公共類

頭文件&#xff1a; #pragma once #include <QWidget>class CFrameLessWidgetBase :public QWidget { public:CFrameLessWidgetBase(QWidget* p nullptr);~CFrameLessWidgetBase() {}protected:bool nativeEvent(const QByteArray& eventType, void* message, long…

static和extern

1.extern extern 是?來聲明外部符號的&#xff0c;如果?個全局的符號在A?件中定義的&#xff0c;在B?件中想使?&#xff0c;就可以使? extern 進?聲明&#xff0c;然后使?。 即在一個源文件中想要使用另一個源文件&#xff0c;即可通過這個extern來聲明使用。 2.st…

未來制造業的新引擎:工業機器人控制解決方案

制造業正經歷著一場革命性的變革 在這個變革的浪潮中&#xff0c;工業機器人成為推動制造業高效生產的關鍵力量。然而&#xff0c;要發揮機器人的最大潛力&#xff0c;一個強大而智能的控制系統是必不可少的。在這個領域&#xff0c;新一代的工業機器人控制解決方案正嶄露頭角&…

學習MySQL先有全局觀,細說其發展歷程及特點

學習MySQL先有全局觀&#xff0c;細說其發展歷程及特點 一、枝繁葉茂的MySQL家族1. 發展歷程2. 分支版本 二、特點分析1. 常用數據庫2. 選型角度及場景 三、三大組成部分四、總結 相信很多同學在接觸編程之初&#xff0c;就接觸過數據庫&#xff0c;而對于其中關系型數據庫中的…

這樣寫postman實現參數化,阿里p8都直呼牛逼

什么時候會用到參數化 比如&#xff1a;一個模塊要用多組不同數據進行測試 驗證業務的正確性 Login模塊&#xff1a;正確的用戶名&#xff0c;密碼 成功&#xff1b;錯誤的用戶名&#xff0c;正確的密碼 失敗 postman實現參數化 在實際的接口測試中&#xff0c;部分參數…

你的關聯申請已發起,請等待企業微信的管理員確認你的申請

微信支付對接時&#xff0c;需要申請AppID,具體在下面的位置&#xff1a; 關聯AppID&#xff0c;發起申請時&#xff0c;會提示這么一句話&#xff1a; 此時需要登錄企業微信網頁版&#xff0c;使用注冊人的企業微信掃碼登錄進去&#xff0c;然后按照下面的步驟操作即可。 點擊…

iEnglish全國ETP大賽:教育游戲助力英語習得

“seesaw,abacus,sword,feather,frog,lion,mouse……”11月18日,經過3局的激烈較量,“以過客之名隊”的胡玲、黃長翔、林家慷率先晉級“玩轉英語,用iEnglish”第三屆全國ETP大賽的16強,在過去的周末中,還有TIK徘徊者隊、不負昭華隊、溫柔殺戮者隊先后晉級。據悉,根據活動規則,在…

電腦內存升級

ddr代兼容 自從DDR內存時代開啟之后&#xff0c;只要滿足內存的插槽規格相同(DDR3或DDR4或DDR5即為內存規格)這一條件&#xff0c;不同品牌、不同頻率以及不同容量的茶品都可以一起使用&#xff0c;除了品牌和容量的影響之外&#xff0c;不同頻率的搭配可能會造成性能方面的影…

面試官:什么是三色標記

程序員的公眾號&#xff1a;源1024&#xff0c;獲取更多資料&#xff0c;無加密無套路&#xff01; 最近整理了一波電子書籍資料&#xff0c;包含《Effective Java中文版 第2版》《深入JAVA虛擬機》&#xff0c;《重構改善既有代碼設計》&#xff0c;《MySQL高性能-第3版》&…

git提交時會將target也提交

有時候大家在提交git時發現會將編譯文件target也提交上去&#xff0c;這種情況有以下幾種情況 情況1&#xff1a;項目沒有設置.gitignore 情況2&#xff1a;設置了.gitignore但是依然會提交。 第一種&#xff1a;添加.gitignore&#xff0c;并在文件中添加需要忽略的東西。 …

redis分布式鎖的學習記錄

核心性質 獨占性&#xff1a;對于同一把鎖&#xff0c;同一時刻只能被一個加鎖方獨占 健壯性&#xff1a;不能產生死鎖。如果有一個因為宕機無法主動解鎖&#xff0c;鎖也應該被正常加載 對稱性&#xff1a;加成和解鎖的使用方必須為同一個身份&#xff0c;不允許被非方釋放 高…

HCIA-實驗命令基礎學習:

視頻學習&#xff1a; 第一部分&#xff1a;基礎學習。 19——子網掩碼。 27——防火墻配置&#xff1a; 32——企業級路由器配置&#xff1a; 基礎實驗完成&#xff1a;&#xff08;完成以下目錄對應的實驗&#xff0c;第一部分基礎實驗就完成。&#xff09; 方法&#xff…

C //習題 8.13 寫一個用矩形法求定積分的通用函數,分別求

C程序設計 &#xff08;第四版&#xff09; 譚浩強 習題8.13 習題 8.13 寫一個用矩形法求定積分的通用函數&#xff0c;分別求 ∫ 0 1 s i n x d x &#xff0c; ∫ 0 1 c o s x d x &#xff0c; ∫ 0 1 e x d x \int_{0}^{1}sinx\ dx&#xff0c;\ \ \int_{0}^{1}cosx\ …

ILI9225 TFT顯示屏16位并口方式驅動

所用屏及資料如后圖&#xff1a; ILI9225&#xff0c;176*220&#xff0c;8位或16位并口屏&#xff0c;IM0接GND&#xff0c;電源及背光接3.3v 主控&#xff1a;CH32V307驅動&#xff08;庫文件和STM32基本一樣&#xff09; 一、源碼 ILI9225.c #include "ILI9225.h&quo…

設計模式(二)-創建者模式(4)-原型模式

一、為何需要原型模式&#xff08;Prototype Pattern&#xff09;? 在軟件設計中&#xff0c;我們會遇到到這樣的情況&#xff1a;對原對象進行拷貝一個新的副本。想要實現這樣的邏輯&#xff0c;有一種笨方法就是對原對象里的所有變量進行逐一賦值。但是這樣的做法會導致代碼…

【SpringCloud】認識微服務、服務拆分以及遠程調用

SpringCloud 1.認識微服務 1.1單體架構 單體架構&#xff1a;將業務的所有功能集中在一個項目中開發&#xff0c;打成一個包部署 單體架構的優缺點&#xff1a; **優點&#xff1a;**架構簡單&#xff0c;部署成本低 **缺點&#xff1a;**耦合度高&#xff08;維護困難&…

【C++】郭老二博文之:C++目錄

1、POCO 【POCO】POCO學習總結&#xff08;一&#xff09;–下載與編譯 【POCO】POCO學習總結&#xff08;二&#xff09;——配置選擇 【POCO】POCO學習總結&#xff08;三&#xff09;——交叉編譯 2、C11 2.1 STL算法 【C】C11 STL算法(一)&#xff1a;非修改序列操作&a…