schangxiang@126.com
2024-08-16 65bd2dc1d4c1fb136af853c7ede93a338431be29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
<template>
  <a-modal
    title="编辑数据采集点配置"
    :width="900"
    :visible="visible"
    :confirmLoading="confirmLoading"
    @ok="handleSubmit"
    @cancel="handleCancel"
  >
    <a-spin :spinning="confirmLoading">
      <a-form :form="form">
        <a-form-item label="设备名称" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
          <a-select
            :allowClear="true"
            style="width: 100%"
            v-decorator="['equipmentID', { rules: [{ required: true, message: '设备名称不能为空' }] }]"
            placeholder="请选择"
          >
            <a-select-option v-for="(item, index) in equitypeData" :key="index" :value="item.equipmentId">{{
              item.equipmentName
            }}</a-select-option>
          </a-select>
        </a-form-item>
        <a-form-item label="工序号" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
          <a-select
            allow-clear
            style="width: 100%"
            v-decorator="['workingProcedure', { rules: [{ required: true, message: '工序号不能为空' }] }]"
            placeholder="请选择"
          >
            <a-select-option v-for="(item, index) in ProcessSelectData" :key="index" :value="item.code">
              {{ item.name }}
            </a-select-option>
          </a-select>
        </a-form-item>
        <!-- <a-form-item label="设备编号" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
          <a-input placeholder="请输入设备编号" v-decorator="['equipmentID']" />
        </a-form-item>
        <a-form-item label="工序号" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
          <a-input placeholder="请输入工序号" v-decorator="['workingProcedure']" />
        </a-form-item> -->
        <a-form-item label="数据收集点代码" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
          <a-input
            placeholder="请输入数据收集点代码"
            v-decorator="['dataCapturePointCode', { rules: [{ required: true, message: '收集点代码不能为空' }] }]"
          />
        </a-form-item>
        <a-form-item label="收集收集点描述" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
          <a-input placeholder="请输入收集收集点描述" v-decorator="['dataCapturePointCname']" />
        </a-form-item>
        <a-form-item label="收集方式" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
          <a-input-number
            placeholder="请输入收集方式"
            style="width: 100%"
            v-decorator="['dataCaptureType', { rules: [{ required: true, message: '收集方式不能为空' }] }]"
          />
        </a-form-item>
        <a-form-item label="收集PLC型号" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
          <a-input-number placeholder="请输入收集PLC型号" style="width: 100%" v-decorator="['dataCapturePLCType']" />
        </a-form-item>
        <a-form-item label="PLC的IP地址" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
          <a-input
            placeholder="请输入PLC的IP地址"
            v-decorator="['pLCIP', { rules: [{ required: true, message: 'PLC的IP地址不能为空' }] }]"
          />
        </a-form-item>
        <a-form-item label="PLC端口" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
          <a-input-number
            placeholder="请输入PLC端口"
            style="width: 100%"
            v-decorator="['pLCPort', { rules: [{ required: true, message: 'PLC端口不能为空' }] }]"
          />
        </a-form-item>
        <a-form-item label="DB块地址" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
          <a-input
            placeholder="请输入DB块地址"
            v-decorator="['dbNumber', { rules: [{ required: true, message: 'DB块地址不能为空' }] }]"
          />
        </a-form-item>
        <a-form-item label="地址偏移量" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
          <a-input
            placeholder="请输入地址偏移量"
            v-decorator="['offset', { rules: [{ required: true, message: '地址偏移量不能为空' }] }]"
          />
        </a-form-item>
        <a-form-item label="收集字段类型" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
          <a-input
            placeholder="请输入收集字段类型"
            v-decorator="['dataCaptureColumnType', { rules: [{ required: true, message: '收集字段类型不能为空' }] }]"
          />
        </a-form-item>
        <a-form-item label="收集字段长度" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
          <a-input-number
            placeholder="请输入收集字段长度"
            style="width: 100%"
            v-decorator="['dataCaptureColumnLength']"
          />
        </a-form-item>
        <a-form-item label="收集字段对应列名" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
          <a-input placeholder="请输入收集字段对应列名" v-decorator="['dataCaptureColumnTabelName']" />
        </a-form-item>
        <a-form-item label="收集频率(微秒)" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
          <a-input-number
            placeholder="请输入收集频率(微秒)"
            style="width: 100%"
            v-decorator="['dataCaptureFrequency']"
          />
        </a-form-item>
        <a-form-item label="是否反馈PLC" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
          <a-input-number placeholder="请输入是否反馈PLC" style="width: 100%" v-decorator="['isFeedback']" />
        </a-form-item>
        <a-form-item v-show="false"><a-input v-decorator="['id']"/></a-form-item>
      </a-form>
    </a-spin>
  </a-modal>
</template>
 
<script>
import { DataCaptureConfigEdit } from '@/api/modular/main/DataCaptureConfigManage'
import { getEquipmentName } from '@/api/modular/main/EquipmentBaseInfoManage'
export default {
  data() {
    return {
      Id: 0,
      labelCol: {
        xs: { span: 24 },
        sm: { span: 5 }
      },
      wrapperCol: {
        xs: { span: 24 },
        sm: { span: 15 }
      },
      record: {},
      // 设备下拉框数据
      equitypeData: [],
      // 工序下拉框数据
      ProcessSelectData: [],
      visible: false,
      confirmLoading: false,
      form: this.$form.createForm(this)
    }
  },
  created() {
    this.getEquipmentName()
    this.ProcessSelectData = this.$options.filters['dictData']('process_type')
  },
  methods: {
    // 初始化方法
    edit(record) {
      this.visible = true
      this.Id = record.id
      this.$nextTick(() => {})
      // 深度拷贝 移除VUE的监听,防止INDEX页面值变动
      this.record = JSON.parse(JSON.stringify(record))
      this.$nextTick(() => {
        this.form.setFieldsValue({
          id: record.id,
          equipmentID: record.equipmentID,
          workingProcedure: record.workingProcedure,
          dataCapturePointCode: record.dataCapturePointCode,
          dataCapturePointCname: record.dataCapturePointCname,
          dataCaptureType: record.dataCaptureType,
          dataCapturePLCType: record.dataCapturePLCType,
          pLCIP: record.plcip,
          pLCPort: record.plcPort,
          dbNumber: record.dbNumber,
          offset: record.offset,
          dataCaptureColumnType: record.dataCaptureColumnType,
          dataCaptureColumnLength: record.dataCaptureColumnLength,
          dataCaptureColumnTabelName: record.dataCaptureColumnTabelName,
          dataCaptureFrequency: record.dataCaptureFrequency,
          isFeedback: record.isFeedback
        })
      })
    },
    // 获取设备名称
    getEquipmentName() {
      getEquipmentName().then(res => {
        this.equitypeData = res.data
      })
    },
    handleSubmit() {
      const {
        form: { validateFields }
      } = this
      this.confirmLoading = true
      validateFields((errors, values) => {
        if (!errors) {
          for (const key in values) {
            if (values[key] == null) continue
            if (typeof values[key] === 'object') {
              values[key] = JSON.stringify(values[key])
              this.record[key] = values[key]
            } else {
              this.record[key] = values[key]
            }
          }
          DataCaptureConfigEdit(this.record)
            .then(res => {
              if (res.success) {
                this.$message.success('编辑成功')
                this.confirmLoading = false
                this.$emit('ok', this.record)
                this.handleCancel()
              } else {
                this.$message.error('编辑失败:' + JSON.stringify(res.message))
              }
            })
            .finally(res => {
              this.confirmLoading = false
            })
        } else {
          this.confirmLoading = false
        }
      })
    },
    handleCancel() {
      this.form.resetFields()
      this.visible = false
    }
  }
}
</script>