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