gaoshp
2024-11-05 e2fdfe540eaf160dc7d063c60667041edcc64e86
src/views/console/workstation/Dialog.vue
@@ -1,14 +1,15 @@
<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-form v-if="visible" :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="code">
                        <el-input style="width: 240px" :disabled="form.id" v-model="form.code" placeholder="工位编号" clearable></el-input>
                        <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">
@@ -18,7 +19,7 @@
                </el-col>
                <el-col :span="12">
                    <el-form-item label="工位类型" prop="type">
                        <el-select v-model="form.type" style="width: 240px" :disabled="form.id">
                        <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>
@@ -26,13 +27,13 @@
                </el-col>
                <el-col :span="12">
                    <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-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="status">
                        <el-switch v-model="form.status" :active-value="1" :inactive-value="0"/>
                        <el-switch v-model="form.status" :active-value="1" :inactive-value="0" />
                    </el-form-item>
                </el-col>
                <el-col :span="24">
@@ -40,21 +41,42 @@
                        <scUpload v-model="form.avatar" title="工位图片"></scUpload>
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                <el-col :span="12" v-show="!form.id">
                    <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" />
                                :value="item.code" />
                        </el-select>
                    </el-form-item>
                </el-col>
                <!-- 修改的次日生效 -->
                <el-col :span="11" v-show="form.id">
                    <el-form-item label="生产日历" prop="calendarCode">
                        <el-select v-model="form.calendarCodeWaiting" style="width: 240px">
                            <el-option v-for="item in options.calendarList" :key="item.id" :label="item.name"
                                :value="item.code" />
                        </el-select>
                    </el-form-item>
                </el-col>
                <el-col :span="1" v-show="form.id">
                    <div style="display: flex;align-items: center;height: 32px;margin-bottom: 18px;">
                        <el-tooltip class="box-item" effect="dark" content="修改后的日历次日生效" placement="top-start">
                            <el-icon>
                                <el-icon-warning-filled style="vertical-align: middle" />
                            </el-icon>
                        </el-tooltip>
                    </div>
                </el-col>
                <el-col :span="24" style="padding:12px 0;" v-if="form.type == 0">
                    机器信息
                </el-col>
                <el-col :span="12" v-if="form.type == 0 && !form.id">
                    <el-form-item label="选择机器" prop="linkWay" >
                    <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 v-for="item in options.linkWays" :key="item.value" :label="item.value">{{
                                item.label }}</el-radio>
                        </el-radio-group>
                    </el-form-item>
                </el-col>
@@ -62,10 +84,12 @@
                    <!-- 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 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 ? '-' + item.brand : ''}`
                                }}</el-option>
                        </el-select>
                        <el-input v-if="form.id" :disabled="form.id" v-model="form.machineName"></el-input>
                    </el-form-item>
@@ -84,16 +108,16 @@
                <el-col :span="12">
                    <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-option v-for="item in options.machining_type" :key="item.dictKey"
                                :label="item.dictValue" :value="item.dictKey - 0" />
                        </el-select>
                    </el-form-item>
                </el-col>
                <el-col :span="12">
                <!-- <el-col :span="12">
                    <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-option label="FTP" :value="1" />
                            <el-option label="串口" :value="2" />
                        </el-select>
                    </el-form-item>
                </el-col>
@@ -104,7 +128,7 @@
                                :value="item.value" />
                        </el-select>
                    </el-form-item>
                </el-col>
                </el-col> -->
                <el-col :span="12" v-if="form.ftpDirectoryType == 1">
                    <el-form-item label="关联目录" prop="directoryId">
                        <el-select v-model="form.directoryId" style="width: 240px">
@@ -113,29 +137,28 @@
                        </el-select>
                    </el-form-item>
                </el-col>
                <el-col :span="4">
                    <!-- <el-form-item label="工作台" prop="workbenchVOList"> -->
                    <!-- </el-form-item> -->
                <!-- <el-col :span="4">
                    <span>工作台</span>
                </el-col>
                <el-col style="margin-bottom: 14px;">
                    <ul class="workbranch">
                        <li v-for="item in form.workbenchVOList">
                            <span>{{ item.sort}}</span>
                            <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> -->
                <el-col :span="12">
                    <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-form-item label="所属部门" prop="createDept">
                        <el-tree-select :props="{
                            label: 'title',
                            id: 'id',
                        }" 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>
@@ -196,6 +219,7 @@
                status: '',
                avatar: '',
                calendarCode: '',
                calendarCodeWaiting: '',
                linkWay: '',
                machineId: '',
                machineCode: '',
@@ -224,13 +248,13 @@
                status: [
                    { required: true, message: '必填' }
                ],
                linkWay:[
                linkWay: [
                    { required: true, message: '必填' }
                ],
                machineId:[
                machineId: [
                    { required: true, message: '必填' }
                ],
                directoryId:[
                directoryId: [
                    { required: true, message: '必填' }
                ],
            },
@@ -291,21 +315,25 @@
    methods: {
        //显示
        open(mode = 'add', params) {
            this.isSaveing = false;
            this.mode = mode;
            this.visible = true;
            console.log('---------', 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 || []
                this.$HTTP.get(`/api/smis/workstation/get?workstationId=${params.id}`).then(res => {
                    this.form = res?.data
                    if (this.form.calendarCode && !this.form.calendarCodeWaiting) this.form.calendarCodeWaiting = this.form.calendarCode
                    this.$HTTP.get(`/api/smis/workstation-workbench/listWorkbench?workstationId=${params.id}`).then(res => {
                        this.form.workbenchVOList = res?.data?.workstationList || []
                    })
                })
            }else {
            } else {
                this.form.id = ''
                this.form.workbenchVOList = []
                Object.keys(this.form).forEach(key => {
                    this.form[key] = ''
                })
@@ -314,10 +342,22 @@
        },
        //表单提交方法
        submit() {
            if (!this.form.workbenchVOList) {
                this.form.workbenchVOList = []
            }
            if (this.mode === 'add' && this.form.linkWay === 1) {
                this.form.machineId
                this.form.machineCode = this.form.code
                this.form.machineName = this.form.name
            }
            this.$refs.dialogForm.validate(async (valid) => {
                if (valid) {
                    this.isSaveing = true;
                    var res = await this.$API.workstation.add.post(this.form);
                    try {
                        var res = await this.$API.workstation.add.post(this.form);
                    } catch (error) {
                        this.isSaveing = false;
                    }
                    this.isSaveing = false;
                    if (res.code == 200) {
                        this.$emit('success', this.form, this.mode)
@@ -342,14 +382,14 @@
            //可以和上面一样单个注入,也可以像下面一样直接合并进去
            //Object.assign(this.form, data)
        },
        change (id) {
            let row = this.options.listnoband.find(v=>v.id ==id)
            if (!row)  {
        change(id) {
            let row = this.options.listnoband.find(v => v.id == id)
            if (!row) {
                this.form.machineCode = ''
                this.form.machineId = ''
                this.form.machineName = ''
            }else {
            } else {
                this.form.machineCode = row.machineCode
                this.form.machineId = row.id
                this.form.machineName = row.machineName
@@ -359,7 +399,7 @@
            })
            console.log(row)
        },
        nodeClick (node) {
        nodeClick(node) {
            console.log(node)
            if (node.parentId == 0) return
            this.$nextTick(() => {
@@ -367,12 +407,15 @@
                this.form.groupName = node.name
            })
        },
        nodeClickTree (node) {
        nodeClickTree(node) {
            this.$nextTick(() => {
                this.form.createDept = node.id
            })
        },
        addWork () {
        addWork() {
            if (!this.form.workbenchVOList) {
                this.form.workbenchVOList = []
            }
            this.form.workbenchVOList.push({
                sort: this.form.workbenchVOList.length + 1,
                name: ''
@@ -386,20 +429,22 @@
.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;
            height: 25px;
            line-height: 25px;
            text-align: center;
            border-radius: 50%;
            background: #ccc;
            margin-right: 8px;
        }
    }
}
</style>