| | |
| | | /* |
| | | * @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" |
| | |
| | | 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 |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <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="请è¾å
¥PINç " 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> |
| | |
| | | <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> |
| | |
| | | |
| | | </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: '', |
| | |
| | | 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) { |
| | |
| | | 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> |