| | |
| | | 基础信息 |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="工位编号" prop="userName"> |
| | | <el-input style="width: 240px" v-model="form.userName" placeholder="工位编号" clearable></el-input> |
| | | <el-form-item label="工位编号" prop="code"> |
| | | <el-input style="width: 240px" :disabled="form.id" v-model="form.code" placeholder="工位编号" |
| | | clearable></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="工位名称" prop="userName"> |
| | | <el-input style="width: 240px" v-model="form.userName" placeholder="工位名称" clearable></el-input> |
| | | <el-form-item label="工位名称" prop="name"> |
| | | <el-input style="width: 240px" v-model="form.name" placeholder="工位名称" clearable></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="工位类型" prop="userName"> |
| | | <el-select v-model="type" style="width: 240px"> |
| | | <el-form-item label="工位类型" prop="type"> |
| | | <el-select v-model="form.type" style="width: 240px" :disabled="form.id"> |
| | | <el-option v-for="item in options.types" :key="item.value" :label="item.label" |
| | | :value="item.value" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="所属工位组" prop="userName"> |
| | | <el-tree-select v-model="form.userName" :data="options.group" :render-after-expand="false" |
| | | style="width: 240px" /> |
| | | <!-- <el-select v-model="type" style="width: 240px"> |
| | | <el-option v-for="item in options" :key="item.value" :label="item.label" |
| | | :value="item.value" /> |
| | | </el-select> --> |
| | | <el-form-item label="所属工位组" prop="groupName"> |
| | | <el-tree-select @node-click="nodeClick" v-model="form.groupName" :data="options.group" |
| | | :check-on-click-node="true" style="width: 240px" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="状态" prop="userName"> |
| | | <el-select v-model="type" style="width: 240px"> |
| | | <el-option v-for="item in options.status" :key="item.value" :label="item.label" |
| | | :value="item.value" /> |
| | | </el-select> |
| | | <el-form-item label="状态" prop="status"> |
| | | <el-switch v-model="form.status" :active-value="1" :inactive-value="0" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="工位图片" prop="avatar"> |
| | | <sc-upload v-model="form.avatar" title="工位图片"></sc-upload> |
| | | <scUpload v-model="form.avatar" title="工位图片"></scUpload> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="生产日历" prop="userName"> |
| | | <el-select v-model="type" style="width: 240px"> |
| | | <el-form-item label="生产日历" prop="calendarCode"> |
| | | <el-select v-model="form.calendarCode" style="width: 240px"> |
| | | <el-option v-for="item in options.calendarList" :key="item.id" :label="item.name" |
| | | :value="item.id" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24" style="padding:12px 0;"> |
| | | <el-col :span="24" style="padding:12px 0;" v-if="form.type == 0"> |
| | | 机器信息 |
| | | </el-col> |
| | | |
| | | <el-col :span="12"> |
| | | <el-form-item label="选择机器" prop="userName"> |
| | | <!-- <el-select v-model="type" style="width: 240px"> |
| | | <el-option v-for="item in options.linkWays" :key="item.value" :label="item.label" |
| | | :value="item.value" /> |
| | | </el-select> --> |
| | | <el-radio-group v-model="form.userName"> |
| | | <el-radio v-for="item in options.linkWays" :key="item.value" :value="item.value">{{item.label}}</el-radio> |
| | | <el-col :span="12" v-if="form.type == 0 && !form.id"> |
| | | <el-form-item label="选择机器" prop="linkWay"> |
| | | <el-radio-group v-model="form.linkWay"> |
| | | <el-radio v-for="item in options.linkWays" :key="item.value" |
| | | :label="item.value">{{ item.label }}</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="机器编号" prop="userName"> |
| | | <el-input style="width: 240px" v-model="form.userName" placeholder="机器编号" clearable></el-input> |
| | | <el-col :span="12" v-if="(form.type == 0 && form.linkWay == 0) || form.id"> |
| | | <!-- machineCode --> |
| | | <el-form-item label="机器编号" prop="machineId"> |
| | | <!-- <el-input style="width: 240px" v-model="form.machineId" placeholder="机器编号" clearable></el-input> --> |
| | | <el-select v-if="!form.id" v-model="form.machineId" style="width: 240px" @change="change" clear |
| | | filterable> |
| | | <el-option v-for="item in options.listnoband" :key="item.id" :label="item.machineName" |
| | | :value="item.id"> |
| | | {{ `${item?.machineCode}-${item?.machineName}-${item?.brand}` }}</el-option> |
| | | </el-select> |
| | | <el-input v-if="form.id" :disabled="form.id" v-model="form.machineName"></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="userName"> |
| | | <el-select v-model="type" style="width: 240px"> |
| | | <el-form-item label="工种" prop="deviceType"> |
| | | <el-select v-model="form.deviceType" style="width: 240px"> |
| | | <el-option v-for="item in options.work_type" :key="item.dictKey" :label="item.dictValue" |
| | | :value="item.dictKey" /> |
| | | :value="item.dictKey - 0" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="加工属性" prop="userName"> |
| | | <el-select v-model="type" style="width: 240px"> |
| | | <el-option v-for="item in options.machining_type" :key="item.dictKey" :label="item.dictValue" |
| | | :value="item.dictKey" /> |
| | | <el-form-item label="加工属性" prop="properties"> |
| | | <el-select v-model="form.properties" style="width: 240px"> |
| | | <el-option v-for="item in options.machining_type" :key="item.dictKey" |
| | | :label="item.dictValue" :value="item.dictKey" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="程序传输方式" prop="userName"> |
| | | <el-select v-model="type" style="width: 240px"> |
| | | <el-option label="FTP" value="1" /> |
| | | <el-option label="串口" value="" /> |
| | | <el-form-item label="程序传输方式" prop="transmissionMethod"> |
| | | <el-select v-model="form.transmissionMethod" style="width: 240px"> |
| | | <el-option label="FTP" :value="1" /> |
| | | <el-option label="串口" :value="2" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="FTP目录" prop="userName"> |
| | | <el-select v-model="type" style="width: 240px"> |
| | | <el-option v-for="item in options" :key="item.value" :label="item.label" |
| | | <el-form-item label="FTP目录" prop="ftpDirectoryType"> |
| | | <el-select v-model="form.ftpDirectoryType" style="width: 240px"> |
| | | <el-option v-for="item in options.ftpDirectoryType" :key="item.value" :label="item.label" |
| | | :value="item.value" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="工作台" prop="userName"> |
| | | <el-select v-model="type" style="width: 240px"> |
| | | <el-option v-for="item in options" :key="item.value" :label="item.label" |
| | | :value="item.value" /> |
| | | <el-col :span="12" v-if="form.ftpDirectoryType == 1"> |
| | | <el-form-item label="关联目录" prop="directoryId"> |
| | | <el-select v-model="form.directoryId" style="width: 240px"> |
| | | <el-option v-for="item in options.directorys" :key="item.id" :label="item.name" |
| | | :value="item.id" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <!-- <el-form-item label="工作台" prop="workbenchVOList"> --> |
| | | |
| | | <!-- </el-form-item> --> |
| | | <span>工作台</span> |
| | | |
| | | </el-col> |
| | | <el-col style="margin-bottom: 14px;"> |
| | | <ul class="workbranch"> |
| | | <li v-for="item in form.workbenchVOList"> |
| | | <span>{{ item.sort }}</span> |
| | | <el-input v-model="item.name" style="width: 200px"></el-input> |
| | | </li> |
| | | </ul> |
| | | <el-button style="margin-left: 50px;margin-top: 8px" @click="addWork">添加工作台</el-button> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="数据权限" prop="userName"> |
| | | <el-select v-model="type" style="width: 240px"> |
| | | <el-option v-for="item in options" :key="item.value" :label="item.label" |
| | | :value="item.value" /> |
| | | </el-select> |
| | | <el-form-item label="数据权限" prop="createDept"> |
| | | <el-tree-select clearable @node-click="nodeClickTree" v-model="form.createDept" :data="tree" |
| | | :check-on-click-node="true" style="width: 240px"> |
| | | <template #default="{ data: { title } }"> |
| | | {{ title }}</template> |
| | | </el-tree-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | calendarList: this.calendarList, |
| | | linkWays: this.linkWays, |
| | | work_type: this.work_type, |
| | | machining_type: this.machining_type |
| | | machining_type: this.machining_type, |
| | | listnoband: this.listnoband, |
| | | directorys: this.directorys, |
| | | ftpDirectoryType: this.ftpDirectoryType |
| | | } |
| | | } |
| | | }, |
| | |
| | | isSaveing: false, |
| | | //表单数据 |
| | | form: { |
| | | id: "", |
| | | userName: "", |
| | | avatar: "", |
| | | name: "", |
| | | dept: "", |
| | | group: [] |
| | | id: '', |
| | | code: '', |
| | | name: '', |
| | | type: '', |
| | | groupName: '', |
| | | status: '', |
| | | avatar: '', |
| | | calendarCode: '', |
| | | linkWay: '', |
| | | machineId: '', |
| | | machineCode: '', |
| | | machineName: '', |
| | | deviceType: '', |
| | | properties: '', |
| | | transmissionMethod: '', |
| | | ftpDirectoryType: '', |
| | | workbenchVOList: [], |
| | | createDept: '', |
| | | }, |
| | | //验证规则 |
| | | rules: { |
| | | avatar: [ |
| | | { required: true, message: '请上传头像' } |
| | | ], |
| | | userName: [ |
| | | { required: true, message: '请输入登录账号' } |
| | | code: [ |
| | | { required: true, message: '必填' } |
| | | ], |
| | | name: [ |
| | | { required: true, message: '请输入真实姓名' } |
| | | { required: true, message: '必填' } |
| | | ], |
| | | password: [ |
| | | { required: true, message: '请输入登录密码' }, |
| | | { |
| | | validator: (rule, value, callback) => { |
| | | if (this.form.password2 !== '') { |
| | | this.$refs.dialogForm.validateField('password2'); |
| | | } |
| | | callback(); |
| | | } |
| | | } |
| | | type: [ |
| | | { required: true, message: '必填' } |
| | | ], |
| | | password2: [ |
| | | { required: true, message: '请再次输入密码' }, |
| | | { |
| | | validator: (rule, value, callback) => { |
| | | if (value !== this.form.password) { |
| | | callback(new Error('两次输入密码不一致!')); |
| | | } else { |
| | | callback(); |
| | | } |
| | | } |
| | | } |
| | | groupName: [ |
| | | { required: true, message: '必填' } |
| | | ], |
| | | dept: [ |
| | | { required: true, message: '请选择所属部门' } |
| | | status: [ |
| | | { required: true, message: '必填' } |
| | | ], |
| | | group: [ |
| | | { required: true, message: '请选择所属角色', trigger: 'change' } |
| | | ] |
| | | linkWay: [ |
| | | { required: true, message: '必填' } |
| | | ], |
| | | machineId: [ |
| | | { required: true, message: '必填' } |
| | | ], |
| | | directoryId: [ |
| | | { required: true, message: '必填' } |
| | | ], |
| | | }, |
| | | //所需数据选项 |
| | | calendarList: [], |
| | | work_type: [], |
| | | machining_type: [], |
| | | listnoband: [], |
| | | directorys: [], |
| | | ftpDirectoryType: [ |
| | | { |
| | | label: '不关联目录', |
| | | value: 0 |
| | | }, |
| | | { |
| | | label: '关联目录', |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: '创建同名目录', |
| | | value: 2 |
| | | }, |
| | | ], |
| | | linkWays: [ |
| | | { |
| | | label: '关联机器', |
| | | value: '0' |
| | | value: 0 |
| | | }, { |
| | | label: '创建同名机器', |
| | | value: '1' |
| | | value: 1 |
| | | } |
| | | ] |
| | | ], |
| | | tree: [] |
| | | } |
| | | }, |
| | | created() { |
| | |
| | | this.$API.system.dic.getDic.get({ code: 'machining_type' }).then(res => { |
| | | this.machining_type = res.data |
| | | }) |
| | | this.$API.workstation.getlistnoband.get().then(res => { |
| | | this.listnoband = res.data |
| | | }) |
| | | this.$HTTP.get(`/api/blade-system/data-scope-manager/tree`).then(res => { |
| | | this.tree = res.data.map(item => { |
| | | return { |
| | | ...item, |
| | | label: item.title |
| | | } |
| | | }) |
| | | }) |
| | | }, |
| | | methods: { |
| | | //显示 |
| | | open(mode = 'add', params) { |
| | | this.mode = mode; |
| | | this.visible = true; |
| | | this.params = params |
| | | |
| | | if (params) { |
| | | Object.keys(this.form).forEach(key => { |
| | | this.form[key] = params[key] |
| | | }) |
| | | this.$HTTP.get(`/api/blade-cps/workstation/get?workstationId=${params.id}`).then(res => { |
| | | this.form = res?.data |
| | | this.$HTTP.get(`/api/blade-cps/workstation-workbench/listWorkbench?workstationId=${params.id}`).then(res => { |
| | | this.form.workbenchVOList = res?.data?.workstationList || [] |
| | | }) |
| | | }) |
| | | } else { |
| | | this.form.id = '' |
| | | Object.keys(this.form).forEach(key => { |
| | | this.form[key] = '' |
| | | }) |
| | | } |
| | | return this |
| | | }, |
| | | //表单提交方法 |
| | |
| | | this.$refs.dialogForm.validate(async (valid) => { |
| | | if (valid) { |
| | | this.isSaveing = true; |
| | | var res = await this.$API.demo.post.post(this.form); |
| | | var res = await this.$API.workstation.add.post(this.form); |
| | | this.isSaveing = false; |
| | | if (res.code == 200) { |
| | | this.$emit('success', this.form, this.mode) |
| | |
| | | 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) |
| | | }, |
| | | change(id) { |
| | | let row = this.options.listnoband.find(v => v.id == id) |
| | | if (!row) { |
| | | this.form.machineCode = '' |
| | | this.form.machineId = '' |
| | | this.form.machineName = '' |
| | | |
| | | } else { |
| | | this.form.machineCode = row.machineCode |
| | | this.form.machineId = row.id |
| | | this.form.machineName = row.machineName |
| | | } |
| | | this.$HTTP.get(`/api/blade-dnc/ftp-director/get-machine-of-workstation-ftp?id=${this.form.machineId}`).then(res => { |
| | | this.directorys = res.data |
| | | }) |
| | | console.log(row) |
| | | }, |
| | | nodeClick(node) { |
| | | console.log(node) |
| | | if (node.parentId == 0) return |
| | | this.$nextTick(() => { |
| | | this.form.groupId = node.id |
| | | this.form.groupName = node.name |
| | | }) |
| | | }, |
| | | nodeClickTree(node) { |
| | | this.$nextTick(() => { |
| | | this.form.createDept = node.id |
| | | }) |
| | | }, |
| | | addWork() { |
| | | this.form.workbenchVOList.push({ |
| | | sort: this.form.workbenchVOList.length + 1, |
| | | name: '' |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style></style> |
| | | <style lang="scss" scoped> |
| | | .workbranch { |
| | | list-style: none; |
| | | padding-left: 50px; |
| | | |
| | | li { |
| | | margin-top: 8px; |
| | | |
| | | span { |
| | | display: inline-block; |
| | | width: 25px; |
| | | height: 25px; |
| | | line-height: 25px; |
| | | text-align: center; |
| | | border-radius: 50%; |
| | | background: #ccc; |
| | | margin-right: 8px; |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | </style> |