From cfe5cd40403eb8c2f10e91f00157a284d3efe190 Mon Sep 17 00:00:00 2001
From: gaoshp <291585735@qq.com>
Date: 星期日, 31 三月 2024 17:00:12 +0800
Subject: [PATCH] 工位信息

---
 src/views/console/workstation/index.vue  |  172 +++++++++++++++++---
 src/api/model/workstation.js             |   11 +
 src/assets/machine.png                   |    0 
 src/views/console/workstation/Dialog.vue |  254 +++++++++++++++++++++++++++++++
 4 files changed, 406 insertions(+), 31 deletions(-)

diff --git a/src/api/model/workstation.js b/src/api/model/workstation.js
index b7b7dfe..d2b797f 100644
--- a/src/api/model/workstation.js
+++ b/src/api/model/workstation.js
@@ -1,7 +1,7 @@
 /*
  * @Date: 2024-03-24 11:37:47
  * @LastEditors: gaoshp
- * @LastEditTime: 2024-03-27 22:00:10
+ * @LastEditTime: 2024-03-31 16:51:53
  * @FilePath: /cps-web/src/api/model/workstation.js
  */
 import config from "@/config"
@@ -41,5 +41,14 @@
 		delete: async function(params){
 			return await http.delete(this.url, params);
 		}
+	},
+	deleteWork: {
+		url: `${config.API_URL}/blade-cps/workstation`,
+		name: "鍒犻櫎宸ヤ綅",
+		delete: async function(params){
+			return await http.delete(this.url, params);
+		}
+		// /blade-cps/workstation?type=1&workstationIds=1689546460820299778
 	}
+	
 }
\ No newline at end of file
diff --git a/src/assets/machine.png b/src/assets/machine.png
new file mode 100644
index 0000000..a369442
--- /dev/null
+++ b/src/assets/machine.png
Binary files differ
diff --git a/src/views/console/workstation/Dialog.vue b/src/views/console/workstation/Dialog.vue
new file mode 100644
index 0000000..5295498
--- /dev/null
+++ b/src/views/console/workstation/Dialog.vue
@@ -0,0 +1,254 @@
+<template>
+    <el-dialog :title="titleMap[mode]" v-model="visible" :width="800" destroy-on-close @closed="$emit('closed')">
+        <el-form :model="form" :rules="rules" :disabled="mode == 'show'" ref="dialogForm" label-width="120px"
+            label-position="center">
+            <el-row>
+                <el-col :span="24" style="padding:12px 0;">
+                    鍩虹淇℃伅
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="宸ュ彿" prop="userName">
+                        <el-input v-model="form.userName" placeholder="鐢ㄤ簬鐧诲綍绯荤粺" clearable></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="宸ヤ綅缂栧彿" prop="userName">
+                        <el-input v-model="form.userName" placeholder="鐢ㄤ簬鐧诲綍绯荤粺" clearable></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="宸ヤ綅鍚嶇О" prop="userName">
+                        <el-input v-model="form.userName" placeholder="鐢ㄤ簬鐧诲綍绯荤粺" clearable></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="宸ヤ綅绫诲瀷" prop="userName">
+                        <el-input v-model="form.userName" placeholder="鐢ㄤ簬鐧诲綍绯荤粺" clearable></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="鎵�灞炲伐浣嶇粍" prop="userName">
+                        <el-input v-model="form.userName" placeholder="鐢ㄤ簬鐧诲綍绯荤粺" clearable></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="鐘舵��" prop="userName">
+                        <el-input v-model="form.userName" placeholder="鐢ㄤ簬鐧诲綍绯荤粺" clearable></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="24">
+                    <el-form-item label="澶村儚" prop="avatar">
+                        <sc-upload v-model="form.avatar" title="涓婁紶澶村儚"></sc-upload>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="24" style="padding:12px 0;">
+                    鏈哄櫒淇℃伅
+                </el-col>
+                
+                <el-col :span="12">
+                    <el-form-item label="宸ュ彿" prop="userName">
+                        <el-input v-model="form.userName" placeholder="鐢ㄤ簬鐧诲綍绯荤粺" clearable></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="濮撳悕" prop="name">
+                        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ畬鏁寸殑鐪熷疄濮撳悕" clearable></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="鎵嬫満鍙�" prop="name">
+                        <el-input v-model="form.name" placeholder="璇疯緭鍏ユ墜鏈哄彿" clearable></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="24" style="padding:12px 0;">
+                    鎵╁睍淇℃伅
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="鐘舵��" prop="name">
+                        <el-select v-model="form.group" multiple filterable style="width: 100%">
+                            <el-option v-for="item in groups" :key="item.id" :label="item.label" :value="item.id" />
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="宀椾綅" prop="dept">
+                        <el-select v-model="form.group" multiple filterable style="width: 100%">
+                            <el-option v-for="item in groups" :key="item.id" :label="item.label" :value="item.id" />
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="閭" prop="name">
+                        <el-input v-model="form.name" placeholder="璇疯緭鍏ラ偖绠�" clearable></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="閮ㄩ棬" prop="dept">
+                        <el-select v-model="form.group" multiple filterable style="width: 100%">
+                            <el-option v-for="item in groups" :key="item.id" :label="item.label" :value="item.id" />
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="PIN鐮�" prop="name">
+                        <el-input v-model="form.name" placeholder="璇疯緭鍏IN鐮�" clearable></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="鍏ヨ亴鏃堕棿" prop="name">
+                        <el-date-picker style="width: 100%;" v-model="value1" type="date" placeholder="Pick a day"
+                            :size="size" />
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="鍏宠仈璐﹀彿" prop="name">
+                        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ叧鑱旇处鍙�" clearable></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="鏁版嵁鏉冮檺閰嶇疆" prop="name">
+                        <el-input v-model="form.name" placeholder="璇疯緭鍏ユ暟鎹潈闄愰厤缃�" clearable></el-input>
+                    </el-form-item>
+                </el-col>
+            </el-row>
+        </el-form>
+        <template #footer>
+            <el-button @click="visible = false">鍙� 娑�</el-button>
+            <el-button v-if="mode != 'show'" type="primary" :loading="isSaveing" @click="submit()">淇� 瀛�</el-button>
+        </template>
+    </el-dialog>
+</template>
+
+<script>
+export default {
+    emits: ['success', 'closed'],
+    data() {
+        return {
+            mode: "add",
+            titleMap: {
+                add: '娣诲姞鍛樺伐',
+                edit: '淇敼鍛樺伐',
+                show: '鏌ョ湅'
+            },
+            visible: false,
+            isSaveing: false,
+            //琛ㄥ崟鏁版嵁
+            form: {
+                id: "",
+                userName: "",
+                avatar: "",
+                name: "",
+                dept: "",
+                group: []
+            },
+            //楠岃瘉瑙勫垯
+            rules: {
+                avatar: [
+                    { required: true, message: '璇蜂笂浼犲ご鍍�' }
+                ],
+                userName: [
+                    { required: true, message: '璇疯緭鍏ョ櫥褰曡处鍙�' }
+                ],
+                name: [
+                    { required: true, message: '璇疯緭鍏ョ湡瀹炲鍚�' }
+                ],
+                password: [
+                    { required: true, message: '璇疯緭鍏ョ櫥褰曞瘑鐮�' },
+                    {
+                        validator: (rule, value, callback) => {
+                            if (this.form.password2 !== '') {
+                                this.$refs.dialogForm.validateField('password2');
+                            }
+                            callback();
+                        }
+                    }
+                ],
+                password2: [
+                    { required: true, message: '璇峰啀娆¤緭鍏ュ瘑鐮�' },
+                    {
+                        validator: (rule, value, callback) => {
+                            if (value !== this.form.password) {
+                                callback(new Error('涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!'));
+                            } else {
+                                callback();
+                            }
+                        }
+                    }
+                ],
+                dept: [
+                    { required: true, message: '璇烽�夋嫨鎵�灞為儴闂�' }
+                ],
+                group: [
+                    { required: true, message: '璇烽�夋嫨鎵�灞炶鑹�', trigger: 'change' }
+                ]
+            },
+            //鎵�闇�鏁版嵁閫夐」
+            groups: [],
+            groupsProps: {
+                value: "id",
+                multiple: true,
+                checkStrictly: true
+            },
+            depts: [],
+            deptsProps: {
+                value: "id",
+                checkStrictly: true
+            }
+        }
+    },
+    mounted() {
+        // this.getGroup()
+        // this.getDept()
+    },
+    methods: {
+        //鏄剧ず
+        open(mode = 'add') {
+            this.mode = mode;
+            this.visible = true;
+            return this
+        },
+        //鍔犺浇鏍戞暟鎹�
+        async getGroup() {
+            var res = await this.$API.system.role.list.get();
+            this.groups = res.data.rows;
+        },
+        async getDept() {
+            var res = await this.$API.system.dept.list.get();
+            this.depts = res.data;
+        },
+        //琛ㄥ崟鎻愪氦鏂规硶
+        submit() {
+            this.$refs.dialogForm.validate(async (valid) => {
+                if (valid) {
+                    this.isSaveing = true;
+                    var res = await this.$API.demo.post.post(this.form);
+                    this.isSaveing = false;
+                    if (res.code == 200) {
+                        this.$emit('success', this.form, this.mode)
+                        this.visible = false;
+                        this.$message.success("鎿嶄綔鎴愬姛")
+                    } else {
+                        this.$alert(res.message, "鎻愮ず", { type: 'error' })
+                    }
+                } else {
+                    return false;
+                }
+            })
+        },
+        //琛ㄥ崟娉ㄥ叆鏁版嵁
+        setData(data) {
+            this.form.id = data.id
+            this.form.userName = data.userName
+            this.form.avatar = data.avatar
+            this.form.name = data.name
+            this.form.group = data.group
+            this.form.dept = data.dept
+
+            //鍙互鍜屼笂闈竴鏍峰崟涓敞鍏ワ紝涔熷彲浠ュ儚涓嬮潰涓�鏍风洿鎺ュ悎骞惰繘鍘�
+            //Object.assign(this.form, data)
+        }
+    }
+}
+</script>
+
+<style></style>
diff --git a/src/views/console/workstation/index.vue b/src/views/console/workstation/index.vue
index fdf8034..4c73802 100644
--- a/src/views/console/workstation/index.vue
+++ b/src/views/console/workstation/index.vue
@@ -18,55 +18,90 @@
 						<el-container>
 							<el-header>
 								<div class="left-panel">
-									<el-button type="primary" icon="el-icon-plus"></el-button>
+									<el-button @click="table_add" type="primary" icon="el-icon-plus"></el-button>
 									<el-button type="danger" plain icon="el-icon-delete"></el-button>
-									<el-button type="primary" plain>瀵煎叆</el-button>
-									<el-button type="primary" plain>鎵归噺鎿嶄綔</el-button>
+									<!-- <el-button type="primary" plain>瀵煎叆</el-button>
+									<el-button type="primary" plain>鎵归噺鎿嶄綔</el-button> -->
 								</div>
 								<div class="right-panel">
 									<div class="right-panel-search">
-										<el-select v-model="value" placeholder="Select" style="width: 240px">
-											<el-option v-for="item in options" :key="item.value" :label="item.label"
+										<span>绫诲瀷</span>
+										<el-select v-model="type" style="width: 240px">
+											<el-option v-for="item in types" :key="item.value" :label="item.label"
 												:value="item.value" />
 										</el-select>
-										<el-select v-model="value" placeholder="Select" style="width: 240px">
-											<el-option v-for="item in options" :key="item.value" :label="item.label"
+										<span>鐘舵��</span>
+										<el-select v-model="statu" style="width: 240px">
+											<el-option v-for="item in status" :key="item.value" :label="item.label"
 												:value="item.value" />
 										</el-select>
-										<el-input style="width: 240px" placeholder="璇疯緭鍏ュ伐浣嶅悕绉�/缂栧彿" clearable></el-input>
-										<el-button type="primary" icon="el-icon-search"></el-button>
+										<el-input v-model="keyWord" style="width: 240px" placeholder="璇疯緭鍏ュ伐浣嶅悕绉�/缂栧彿" clearable></el-input>
+										<el-button @click="search" type="primary" icon="el-icon-search"></el-button>
 									</div>
 								</div>
 							</el-header>
 							<el-main class="nopadding">
-								<scTable ref="table" :params="params" :apiObj="apiObj"
+							<div style="display: flex">
+								<scTable highlight-current-row @dataChange="dataChange" @row-click="rowClick" ref="table" :params="params" :apiObj="apiObj"
 									@selection-change="selectionChange" stripe>
 									<el-table-column type="selection" width="50"></el-table-column>
-									<el-table-column label="宸ヤ綅缂栧彿" prop="id" width="120"
+									<el-table-column label="宸ヤ綅缂栧彿" prop="code" width="120"
 										sortable='custom'></el-table-column>
-									<el-table-column label="宸ヤ綅鍚嶇О" prop="id" width="120"
+									<el-table-column label="宸ヤ綅鍚嶇О" prop="name" width="120"
 										sortable='custom'></el-table-column>
-									<el-table-column label="宸ヤ綅绫诲瀷" prop="id" width="120"
+									<el-table-column label="宸ヤ綅绫诲瀷" prop="type" width="120"
 										sortable='custom'></el-table-column>
-									<el-table-column label="宸ヤ綅鏃ュ巻" prop="id" width="120"
+									<el-table-column label="宸ヤ綅鏃ュ巻" prop="calendarName" width="120"
 										sortable='custom'></el-table-column>
 									<el-table-column label="鎿嶄綔" fixed="right" align="right" width="160">
 										<template #default="scope">
 											<el-button-group>
 												<el-button text type="primary" size="small"
-													@click="table_show(scope.row, scope.$index)">鏌ョ湅</el-button>
-												<el-button text type="primary" size="small"
 													@click="table_edit(scope.row, scope.$index)">缂栬緫</el-button>
 												<el-popconfirm title="纭畾鍒犻櫎鍚楋紵"
-													@confirm="table_del(scope.row, scope.$index)">
+													@confirm="table_del(scope.row, scope.$index, '0')">
 													<template #reference>
 														<el-button text type="primary" size="small">鍒犻櫎</el-button>
+													</template>
+												</el-popconfirm>
+												<el-popconfirm title="纭畾鍋滅敤鍚楋紵"
+													@confirm="table_del(scope.row, scope.$index,'1')">
+													<template #reference>
+														<el-button text type="primary" size="small">鍋滅敤</el-button>
 													</template>
 												</el-popconfirm>
 											</el-button-group>
 										</template>
 									</el-table-column>
 								</scTable>
+								<div style="margin-left: 14px" v-if="Object.keys(previewData).length > 0">
+									<div class="header">
+										<p class="preview-title">宸ヤ綅淇℃伅</p>
+										<div class="preview-content">
+											<div class="img">
+												<img :src="machinePng" alt="">
+											</div>
+											<ul>
+												<li>宸ヤ綅缂栧彿 {{previewData.code}}</li>
+												<li>宸ヤ綅缁� {{previewData.groupName}}</li>
+												<li>宸ヤ綅鍚嶇О {{previewData.name}}</li>
+												<li>宸ヤ綅绫诲瀷 {{previewData.type}}</li>
+												<li>宸ヤ綅鏃ュ巻 {{previewData.calendarName}}</li>
+												<li>鐘舵�� {{previewData.status}}</li>
+											</ul>
+										</div>
+										<el-tabs tab-position="top" class="custom-tabs" v-model="normal">
+											<el-tab-pane label="鏈哄櫒淇℃伅" name="1">
+												鏈哄櫒淇℃伅
+											</el-tab-pane>
+											<el-tab-pane label="鎵╁睍淇℃伅" name="2">
+												鎵╁睍淇℃伅
+											</el-tab-pane>
+										</el-tabs>
+									</div>
+								</div>
+							</div>
+								
 							</el-main>
 						</el-container>
 					</el-container>
@@ -202,22 +237,58 @@
 
 			</el-tabs>
 		</el-card>
+		<Dialog ref="dialog"></Dialog>
 	</el-main>
 </template>
 
 <script>
 import pmsPng from '@/assets/pms.png'
+import Dialog from './Dialog.vue'
+import machinePng from '@/assets/machine.png'
 export default {
 	name: 'system',
+	components: {
+		Dialog
+	},
 	data() {
 		return {
+			machinePng,
 			showGrouploading: false,
 			options: [],
 			activeName: '1',
+			normal: '1',
 			group: [],
 			groupFilterText: '',
 			apiObj: '',
 			params: {},
+			keyWord: '',
+			type: '',
+			statu: '1',
+			types: [
+				{
+					label: '鎵�鏈�',
+					value: ''
+				},
+				{
+					label: '鏈哄櫒',
+					value: '0'
+				},
+				{
+					label: '浜哄伐',
+					value: '1'
+				},
+			],
+			status: [
+				{
+					label: '鍚敤',
+					value: '1'
+				},
+				{
+					label: '鍋滅敤',
+					value: '0'
+				}
+			],
+			previewData: {},
 			// --------
 			form: {
 				groupTag: '',
@@ -376,24 +447,37 @@
 		groupClick(node) {
 			this.treeCheckedNode = node
 		},
+		search () {
+			this.groupClick1(this.treeCheckedNode)
+		},
+		rowClick (data) {
+			this.previewData = data
+			console.log(data)
+		},
 		groupClick1(data) {
 			console.log('-------', data)
 			var params = {
 				groupId: data.id,
-				keyWord: '',
-				status: 1,
-				type: ''
+				keyWord: this.keyWord,
+				status: this.statu,
+				type: this.type,
 			}
 			this.$refs.table.reload(params)
+
+		},
+		dataChange (res,data) {
+			
+			if (data.length > 0) {
+				console.log(data[0], '>>>>>>>>')
+				this.$refs.table.setCurrentRow(data[0])
+				this.previewData = data[0]
+			}else  {
+				this.$refs.table.setCurrentRow()
+				this.previewData = {}
+			}
 		},
 		table_add() {
-			var newRow = {
-				key: "",
-				value: "",
-				title: "",
-				isSet: true
-			}
-			this.setting.push(newRow)
+			this.$refs.dialog.open()
 		},
 		table_edit(row) {
 			if (row.isSet) {
@@ -402,16 +486,44 @@
 				row.isSet = true
 			}
 		},
-		table_del(row, index) {
-			this.setting.splice(index, 1)
+		table_del(row, index,type) {
+			this.$API.workstation.deleteWork.delete({
+				type,
+				workstationIds:row.id
+			}).then(() => {
+				this.search()
+			})
 		},
 	}
 }
 </script>
 
-<style scoped>
+<style lang="scss" scoped>
 .show-info {
 	list-style: none;
 	font-size: 14px;
 }
+.preview-title {
+	padding: 12px;
+	margin-bottom: 14px;
+	font-size: 16px;
+}
+.preview-content {
+	font-size: 14px;
+	display: flex;
+	align-items: center;
+	.img {
+		width: 30%;
+	}
+	ul {
+		list-style: none;
+		display: flex;
+		flex-wrap: wrap;
+		li {
+			width: 50%;
+			flex: 1 0 auto;
+			margin-bottom: 10px;
+		}
+	}
+}
 </style>

--
Gitblit v1.9.3