<template>
|
<a-modal :title="title" :visible="visible" :fullScreen="true" :width="1200" @ok="handleOk" @cancel="handleCancel">
|
<a-spin :spinning="confirmLoading">
|
<a-form :form="form">
|
<a-row style="width: 100%">
|
<a-col :span="24 / 2">
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="刀具编码">
|
<a-input :disabled="disableSubmit" placeholder="请输入刀具编码" v-decorator="['cuttingCode', validatorRules.cuttingCode]" />
|
</a-form-item>
|
</a-col>
|
<a-col :span="24 / 2">
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="刀具名称">
|
<a-input :disabled="disableSubmit" placeholder="请输入刀具名称" v-decorator="['cuttingName', validatorRules.cuttingName]" />
|
</a-form-item>
|
</a-col>
|
</a-row>
|
<a-row style="width: 100%">
|
<a-col :span="24 / 2">
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="刀具分类">
|
<j-search-select-tag
|
:disabled="isEdit"
|
placeholder="请选择刀具分类"
|
v-decorator="['cuttingCategory', validatorRules.cuttingCategory]"
|
dict="cutting_category"
|
/>
|
</a-form-item>
|
</a-col>
|
<a-col :span="24 / 2">
|
<a-form-item label="存放位置" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-input :disabled="disableSubmit" placeholder="请输入存放位置" v-decorator="['storeLocation', validatorRules.storeLocation]" />
|
</a-form-item>
|
</a-col>
|
</a-row>
|
<a-row style="width: 100%">
|
<a-col :span="24 / 2">
|
<a-form-item label="供应商" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-input :disabled="disableSubmit" placeholder="请输入供应商" v-decorator="['supplierId', validatorRules.supplierId]" />
|
</a-form-item>
|
</a-col>
|
<a-col :span="24 / 2">
|
<a-form-item label="最小包装单位" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-input :disabled="disableSubmit" placeholder="请输入最小包装单位" v-decorator="['minimumPackageUnit', validatorRules.minimumPackageUnit]" />
|
</a-form-item>
|
</a-col>
|
</a-row>
|
|
<a-row style="width: 100%">
|
<a-col :span="24 / 2">
|
<a-form-item label="刀具材质" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-input :disabled="disableSubmit" placeholder="请输入刀具材质" v-decorator="['cuttingMaterial', validatorRules.cuttingMaterial]" />
|
</a-form-item>
|
</a-col>
|
<a-col :span="24 / 2">
|
<a-form-item label="型号" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-input :disabled="disableSubmit" placeholder="请输入型号" v-decorator="['cuttingModel', validatorRules.cuttingModel]" />
|
</a-form-item>
|
</a-col>
|
</a-row>
|
<a-row style="width: 100%">
|
<a-col :span="24 / 2">
|
<a-form-item label="图号" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-input :disabled="disableSubmit" placeholder="请输入图号" v-decorator="['drawingNumber', validatorRules.drawingNumber]" />
|
</a-form-item>
|
</a-col>
|
<a-col :span="24 / 2">
|
<a-form-item label="库存预警值" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-input-number :disabled="disableSubmit" style="width: 100%" :min=1 placeholder="请输入库存预警值" v-decorator="['inventoryWarning', validatorRules.inventoryWarning]" />
|
</a-form-item>
|
</a-col>
|
</a-row>
|
<a-row style="width: 100%">
|
<a-col :span="24">
|
<a-form-item label="备注" :labelCol="{span:3}" :wrapperCol="{span:21}">
|
<a-textarea :disabled="disableSubmit" placeholder="请输入备注" v-decorator="['remark', validatorRules.remark]" />
|
</a-form-item>
|
</a-col>
|
</a-row>
|
<!-- 子表格信息-->
|
<a-tabs defaultActiveKey="1">
|
<a-tab-pane
|
tab="刀具明细"
|
key="1"
|
>
|
|
<a-table
|
ref="table"
|
bordered
|
size="middle"
|
rowKey="id"
|
:columns="columns"
|
:dataSource="dataSource"
|
:pagination=false
|
>
|
|
<template
|
v-for="col in columns"
|
:slot="col.dataIndex"
|
slot-scope='text, record, index'
|
>
|
<div :key="col.dataIndex">
|
|
|
|
<a-input
|
:value="text"
|
:disabled="disableSubmit"
|
v-if="col.dataIndex == 'propertyCode'"
|
@change="(e)=>handleChange(e.target.value, record.key, col, index)"
|
/>
|
|
<a-input
|
:value="text"
|
:disabled="disableSubmit"
|
v-else-if="col.dataIndex == 'propertyName'"
|
@change="(e)=>handleChange(e.target.value, record.key, col, index)"
|
/>
|
|
<a-input
|
:value="text"
|
:disabled="disableSubmit"
|
v-else-if="col.dataIndex == 'propertyUnit'"
|
@change="(e)=>handleChange(e.target.value, record.key, col, index)"
|
/>
|
|
<a-input
|
:value="text"
|
:disabled="disableSubmit"
|
v-else-if="col.dataIndex == 'propertyValue'"
|
@change="(e)=>handleChange(e.target.value, record.key, col, index)"
|
/>
|
|
</div>
|
</template>
|
|
<template
|
slot="action"
|
slot-scope="text,record,index"
|
>
|
<a-popconfirm
|
title="是否要删除此行?"
|
@confirm="handleDelete(text,record,index)"
|
>
|
<Tooltip
|
placement="top"
|
title="删除"
|
>
|
<!-- shape="circle" -->
|
<a-button
|
:disabled="disableSubmit"
|
icon="delete"
|
/>
|
</Tooltip>
|
</a-popconfirm>
|
</template>
|
|
</a-table>
|
|
<a-button
|
:disabled="disableSubmit"
|
style="width: 100%; margin-top: 16px; margin-bottom: 8px"
|
type="dashed"
|
icon="plus"
|
@click="addPropertiesList"
|
>添加扩展属性</a-button>
|
</a-tab-pane>
|
</a-tabs>
|
<!-- 子表格信息结束-->
|
</a-form>
|
</a-spin>
|
<template slot="footer" v-if="disableSubmit == false">
|
<a-button :style="{ marginRight: '8px' }" @click="handleCancel">关闭</a-button>
|
<a-button @click="handleOk" :disabled="isDisabled" type="primary">提交</a-button>
|
</template>
|
|
<template slot="footer" v-if="disableSubmit == true">
|
<a-button :style="{ marginRight: '8px' }" @click="handleCancel">关闭</a-button>
|
</template>
|
</a-modal>
|
</template>
|
|
<script>
|
import pick from 'lodash.pick'
|
import { ajaxGetDictItems } from '@/api/api'
|
import moment from 'moment'
|
import { getAction, postAction, requestPut } from '@/api/manage'
|
import JDictSelectTag from '@/components/dict/JDictSelectTag'
|
import JSearchSelectTag from '@/components/dict/JSearchSelectTag'
|
import JMultiSelectTag from '@/components/dict/JMultiSelectTag'
|
import { filterObj } from '@/utils/util'
|
import store from '@/store/'
|
|
export default {
|
name: 'CuttingToolModel',
|
components: {
|
JMultiSelectTag,
|
JDictSelectTag,
|
store,
|
moment,
|
},
|
data() {
|
return {
|
/* 分页参数 */
|
ipagination: {
|
current: 1,
|
pageSize: 10,
|
pageSizeOptions: ['10', '20', '30'],
|
showTotal: (total, range) => {
|
return range[0] + '-' + range[1] + ' 共' + total + '条'
|
},
|
showQuickJumper: true,
|
showSizeChanger: true,
|
total: 0,
|
},
|
isDisabled: false,
|
selectedRowKeys: {},
|
state: {
|
show: false,
|
maintenanceValue: 1,
|
checkValue: 1,
|
maintenanceState: false,
|
checkState: false,
|
},
|
disableSubmit: false,
|
title: '操作',
|
visible: false,
|
model: {},
|
labelCol: {
|
xs: { span: 24 },
|
sm: { span: 6 },
|
},
|
wrapperCol: {
|
xs: { span: 24 },
|
sm: { span: 18 },
|
},
|
confirmLoading: false,
|
loading: false,
|
form: this.$form.createForm(this),
|
dataSource: [],
|
param: {},
|
validatorRules: {
|
cuttingCode: {
|
rules: [
|
{
|
required: true,
|
message: '请输入刀具编码!',
|
},
|
],
|
},
|
cuttingName: {
|
rules: [
|
{
|
required: true,
|
message: '请输入刀具名称!',
|
},
|
],
|
},
|
cuttingCategory: {
|
rules: [
|
{
|
required: true,
|
message: '请选择刀具分类!',
|
},
|
],
|
},
|
},
|
url: {
|
add: '/cms/cuttingTool/add',
|
edit: '/cms/cuttingTool/edit',
|
},
|
columns: [
|
{
|
title: '#',
|
dataIndex: '',
|
key: 'rowIndex',
|
width: 50,
|
align: 'center',
|
customRender: function (t, r, index) {
|
return parseInt(index) + 1
|
},
|
},
|
{
|
title: '属性编码',
|
align: 'center',
|
dataIndex: 'propertyCode',
|
width: 150,
|
scopedSlots: { customRender: 'propertyCode' },
|
},
|
{
|
title: '属性名称',
|
align: 'center',
|
dataIndex: 'propertyName',
|
scopedSlots: { customRender: 'propertyName' },
|
},
|
{
|
title: '属性单位',
|
align: 'center',
|
dataIndex: 'propertyUnit',
|
scopedSlots: { customRender: 'propertyUnit' },
|
},
|
{
|
title: '属性值',
|
align: 'center',
|
dataIndex: 'propertyValue',
|
scopedSlots: { customRender: 'propertyValue' },
|
},
|
{
|
title: '操作',
|
dataIndex: 'action',
|
align: 'center',
|
scopedSlots: { customRender: 'action' },
|
},
|
],
|
cuttingId:'',
|
deletePropertiesIds: [],
|
}
|
},
|
created() {
|
},
|
methods: {
|
add() {
|
this.edit()
|
},
|
edit(record) {
|
this.form.resetFields()
|
this.model = Object.assign({}, record)
|
this.visible = true
|
if (record.id) {
|
this.dataSource = record.cuttingPropertiesList
|
}
|
this.$nextTick(() => {
|
this.form.setFieldsValue(
|
pick(this.model, 'cuttingCode', 'cuttingName', 'cuttingCategory', 'storeLocation','cuttingModel', 'supplierId', 'minimumPackageUnit',
|
'cuttingMaterial','drawingNumber','inventoryWarning','remark')
|
)
|
})
|
},
|
handleChange(value, key, column, index) {
|
const temp = [...this.dataSource]
|
const target = temp.filter((item) => key === item.key)[index]
|
if (target) {
|
target[column.dataIndex] = value
|
this.dataSource = temp
|
}
|
},
|
close() {
|
this.$emit('close')
|
this.dataSource = []
|
this.visible = false
|
this.disableSubmit = false
|
},
|
handleDelete(text, record, index) {
|
this.dataSource.splice(index, 1);
|
if (undefined != record.id) {
|
this.deletePropertiesIds.push(record.id);
|
}
|
},
|
handleOk() {
|
const that = this
|
let dataSource = that.dataSource;
|
let deletePropertiesIds = this.deletePropertiesIds;
|
// 触发表单验证
|
this.form.validateFields((err, values) => {
|
if (!err) {
|
that.confirmLoading = true;
|
let formData = Object.assign(this.model, values);
|
formData.cuttingPropertiesList = dataSource;
|
formData.deletePropertiesIds = deletePropertiesIds;
|
let obj;
|
if (!this.model.id) {
|
obj = postAction(this.url.add, formData);
|
} else {
|
obj = requestPut(this.url.edit, formData, { id: this.model.id });
|
}
|
obj.then((res) => {
|
if (res.success) {
|
that.$message.success(res.message);
|
that.$emit('ok');
|
} else {
|
that.$message.warning(res.message);
|
}
|
}).finally(() => {
|
that.confirmLoading = false;
|
that.close();
|
})
|
}
|
}).catch((e) => { })
|
},
|
handleCancel() {
|
this.close()
|
},
|
|
//添加扩展属性
|
addPropertiesList() {
|
const temp = [...(this.dataSource || [])]
|
temp.push({})
|
this.dataSource = temp
|
},
|
filterOption(input, option) {
|
return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
},
|
},
|
watch: {},
|
computed: {
|
},
|
mounted() {
|
},
|
}
|
</script>
|
|
|
<style lang="less" scoped>
|
.ant-btn {
|
padding: 0 10px;
|
margin-left: 3px;
|
}
|
|
.ant-form-item-control {
|
line-height: 0px;
|
}
|
|
/** 主表单行间距 */
|
.ant-form .ant-form-item {
|
margin-bottom: 10px;
|
}
|
|
/** Tab页面行间距 */
|
.ant-tabs-content .ant-form-item {
|
margin-bottom: 0px;
|
}
|
|
/deep/ .notshow {
|
display: none;
|
}
|
</style>
|