From a2441175073f8b09a7eff29effd7e3e617de2f7d Mon Sep 17 00:00:00 2001
From: lzhe <lzhe@example.com>
Date: 星期四, 06 六月 2024 18:23:01 +0800
Subject: [PATCH] Merge branch 'master' of http://www.beijingsoft.cn:9090/r/smart-web

---
 src/components/scFormTable/index.vue |  198 +++++++++++++++++++++++++++++--------------------
 1 files changed, 116 insertions(+), 82 deletions(-)

diff --git a/src/components/scFormTable/index.vue b/src/components/scFormTable/index.vue
index cb44888..9e7649c 100644
--- a/src/components/scFormTable/index.vue
+++ b/src/components/scFormTable/index.vue
@@ -3,8 +3,8 @@
  * @version: 1.3
  * @Author: sakuya
  * @Date: 2023骞�2鏈�9鏃�12:32:26
- * @LastEditors: sakuya
- * @LastEditTime: 2023骞�2鏈�17鏃�10:41:47
+ * @LastEditors: Sneed
+ * @LastEditTime: 2024-04-17 22:09:27
 -->
 
 <template>
@@ -12,112 +12,146 @@
 		<el-table :data="data" ref="table" border stripe>
 			<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 @click="rowAdd"></el-button>
+					<el-button v-if="!hideAdd" type="primary" icon="el-icon-plus" size="small" circle
+						@click="rowAdd"></el-button>
 				</template>
 				<template #default="scope">
-					<div :class="['sc-form-table-handle', {'sc-form-table-handle-delete':!hideDelete}]">
-						<span>{{scope.$index + 1}}</span>
-						<el-button v-if="!hideDelete" type="danger" icon="el-icon-delete" size="small" plain circle @click="rowDel(scope.row, scope.$index)"></el-button>
+					<div :class="['sc-form-table-handle', { 'sc-form-table-handle-delete': !hideDelete }]">
+						<span>{{ scope.$index + 1 }}</span>
+						<el-popconfirm v-if="!scope.row.isSet" title="纭畾鍒犻櫎鍚楋紵"
+							@confirm="rowDel(scope.row, scope.$index)">
+							<template #reference>
+								<el-button v-if="!hideDelete" type="danger" icon="el-icon-delete" size="small" plain
+									circle></el-button>
+								<!-- <el-button text type="primary" size="small">鍒犻櫎</el-button> -->
+							</template>
+						</el-popconfirm>
+
 					</div>
 				</template>
 			</el-table-column>
 			<el-table-column label="" width="50" v-if="dragSort">
 				<template #default>
-					<div class="move" style="cursor: move;"><el-icon-d-caret style="width: 1em; height: 1em;"/></div>
+					<div class="move" style="cursor: move;"><el-icon-d-caret style="width: 1em; height: 1em;" /></div>
 				</template>
 			</el-table-column>
 			<slot></slot>
 			<template #empty>
-				{{placeholder}}
+				{{ placeholder }}
 			</template>
 		</el-table>
 	</div>
 </template>
 
 <script>
-	import Sortable from 'sortablejs'
+import Sortable from 'sortablejs'
 
-	export default {
-		props: {
-			modelValue: { type: Array, default: () => [] },
-			addTemplate: { type: Object, default: () => {} },
-			placeholder: { type: String, default: "鏆傛棤鏁版嵁" },
-			dragSort: { type: Boolean, default: false },
-			hideAdd: { type: Boolean, default: false },
-			hideDelete: { type: Boolean, default: false }
-		},
-		data(){
-			return {
-				data: []
-			}
-		},
-		mounted(){
+export default {
+	props: {
+		modelValue: { type: Array, default: () => [] },
+		addTemplate: { type: Object, default: () => { } },
+		placeholder: { type: String, default: "鏆傛棤鏁版嵁" },
+		dragSort: { type: Boolean, default: false },
+		hideAdd: { type: Boolean, default: false },
+		hideDelete: { type: Boolean, default: false }
+	},
+	data() {
+		return {
+			data: []
+		}
+	},
+	mounted() {
+		this.data = this.modelValue
+		if (this.dragSort) {
+			this.rowDrop()
+		}
+	},
+	watch: {
+		modelValue() {
 			this.data = this.modelValue
-			if(this.dragSort){
-				this.rowDrop()
-			}
 		},
-		watch:{
-			modelValue(){
-				this.data = this.modelValue
+		data: {
+			handler() {
+				this.$emit('update:modelValue', this.data);
 			},
-			data: {
-				handler(){
-					this.$emit('update:modelValue', this.data);
-				},
-				deep: true
-			}
-		},
-		methods: {
-			rowDrop(){
-				const _this = this
-				const tbody = this.$refs.table.$el.querySelector('.el-table__body-wrapper tbody')
-				Sortable.create(tbody, {
-					handle: ".move",
-					animation: 300,
-					ghostClass: "ghost",
-					onEnd({ newIndex, oldIndex }) {
-						_this.data.splice(newIndex, 0, _this.data.splice(oldIndex, 1)[0])
-						const newArray = _this.data.slice(0)
-						const tmpHeight = _this.$refs.scFormTable.offsetHeight
-						_this.$refs.scFormTable.style.setProperty('height', tmpHeight + 'px')
-						_this.data = []
-						_this.$nextTick(() => {
-							_this.data = newArray
-							_this.$nextTick(() => {
-								_this.$refs.scFormTable.style.removeProperty('height')
-							})
+			deep: true
+		}
+	},
+	methods: {
+		rowDrop() {
+			const _this = this
+			const tbody = this.$refs.table.$el.querySelector('.el-table__body-wrapper tbody')
+			Sortable.create(tbody, {
+				handle: ".move",
+				animation: 300,
+				ghostClass: "ghost",
+				onEnd({ newIndex, oldIndex }) {
 
+					_this.data.splice(newIndex, 0, _this.data.splice(oldIndex, 1)[0])
+					const newArray = _this.data.slice(0)
+					const tmpHeight = _this.$refs.scFormTable.offsetHeight
+					_this.$refs.scFormTable.style.setProperty('height', tmpHeight + 'px')
+					_this.data = []
+					_this.$nextTick(() => {
+						_this.data = newArray
+						_this.$nextTick(() => {
+							_this.$emit('rowDrop', newArray)
+							_this.$refs.scFormTable.style.removeProperty('height')
 						})
-					}
-				})
-			},
-			rowAdd(){
-				const temp = JSON.parse(JSON.stringify(this.addTemplate))
-				this.data.push(temp)
-			},
-			rowDel(row, index){
-				this.data.splice(index, 1)
-			},
-			//鎻掑叆琛�
-			pushRow(row){
-				const temp = row || JSON.parse(JSON.stringify(this.addTemplate))
-				this.data.push(temp)
-			},
-			//鏍规嵁index鍒犻櫎
-			deleteRow(index){
-				this.data.splice(index, 1)
-			}
+
+					})
+				}
+			})
+		},
+		rowAdd() {
+			const temp = JSON.parse(JSON.stringify(this.addTemplate))
+			this.data.push(temp)
+		},
+		rowDel(row, index) {
+			this.$emit('delRow', row)
+			this.data.splice(index, 1)
+		},
+		//鎻掑叆琛�
+		pushRow(row) {
+			const temp = row || JSON.parse(JSON.stringify(this.addTemplate))
+			this.data.push(temp)
+		},
+		//鏍规嵁index鍒犻櫎
+		deleteRow(index) {
+			this.data.splice(index, 1)
 		}
 	}
+}
 </script>
 
 <style scoped>
-	.sc-form-table {width: 100%;}
-	.sc-form-table .sc-form-table-handle {text-align: center;}
-	.sc-form-table .sc-form-table-handle span {display: inline-block;}
-	.sc-form-table .sc-form-table-handle button {display: none;}
-	.sc-form-table .hover-row .sc-form-table-handle-delete span {display: none;}
-	.sc-form-table .hover-row .sc-form-table-handle-delete button {display: inline-block;}
-	.sc-form-table .move {text-align: center;font-size: 14px;margin-top: 3px;}
+.sc-form-table {
+	width: 100%;
+}
+
+.sc-form-table .sc-form-table-handle {
+	text-align: center;
+}
+
+.sc-form-table .sc-form-table-handle span {
+	display: inline-block;
+}
+
+.sc-form-table .sc-form-table-handle button {
+	display: none;
+}
+
+.sc-form-table .hover-row .sc-form-table-handle-delete span {
+	display: none;
+}
+
+.sc-form-table .hover-row .sc-form-table-handle-delete button {
+	display: inline-block;
+}
+
+.sc-form-table .move {
+	text-align: center;
+	font-size: 14px;
+	margin-top: 3px;
+}
 </style>

--
Gitblit v1.9.3