450 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			450 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
<!--
 | 
						|
 * @Author: zhp
 | 
						|
 * @Date: 2023-10-17 16:50:19
 | 
						|
 * @LastEditTime: 2023-12-01 16:48:53
 | 
						|
 * @LastEditors: zhp
 | 
						|
 * @Description:
 | 
						|
-->
 | 
						|
<template>
 | 
						|
  <el-dialog class="baseDialog" :visible.sync="visible" :show-close="false" :wrapper-closable="false" width="40%" show-close="true">
 | 
						|
    <small-title slot="title" :no-padding="true">
 | 
						|
      {{ !dataForm.id ? '新增' : '编辑' }}
 | 
						|
    </small-title>
 | 
						|
<!--
 | 
						|
    <div class="content">
 | 
						|
      <div class="visual-part"> -->
 | 
						|
        <el-form ref="dataForm" :model="dataForm" :rules="dataRule" label-width="100px"
 | 
						|
          @keyup.enter.native="dataFormSubmit">
 | 
						|
          <el-row :gutter="20">
 | 
						|
            <el-col :span="12">
 | 
						|
              <el-form-item label="包装流水号" prop="packagingCode">
 | 
						|
                <el-input v-model="dataForm.packagingCode" clearable placeholder="请输入包装流水号" />
 | 
						|
              </el-form-item>
 | 
						|
            </el-col>
 | 
						|
            <el-col :span="12">
 | 
						|
              <el-form-item label="内容" prop="content">
 | 
						|
                <el-input v-model="dataForm.content" clearable placeholder="请输入内容" />
 | 
						|
              </el-form-item>
 | 
						|
            </el-col>
 | 
						|
          </el-row>
 | 
						|
          <el-row :gutter="20">
 | 
						|
            <el-col :span="12">
 | 
						|
              <el-form-item label="所属工单" prop="workOrderId">
 | 
						|
                <el-select v-model="dataForm.workOrderId" style="width: 100%;" placeholder="请选择所属工单" clearable>
 | 
						|
                  <el-option v-for="dict in workOrderList" :key="dict.id" :label="dict.name" :value="dict.id" />
 | 
						|
                </el-select>
 | 
						|
              </el-form-item>
 | 
						|
            </el-col>
 | 
						|
            <el-col :span="12">
 | 
						|
              <el-form-item label="客户" prop="customerId">
 | 
						|
                <el-select v-model="dataForm.customerId" style="width: 100%;" placeholder="请选择客户" clearable>
 | 
						|
                  <el-option v-for="dict in customerList" :key="dict.id" :label="dict.name" :value="dict.id" />
 | 
						|
                </el-select>
 | 
						|
              </el-form-item>
 | 
						|
            </el-col>
 | 
						|
          </el-row>
 | 
						|
          <el-row :gutter="20">
 | 
						|
            <el-col :span="12">
 | 
						|
              <el-form-item label="标签模板" prop="modelId">
 | 
						|
                <el-select v-model="dataForm.modelId" style="width: 100%;" placeholder="请选择标签模板" clearable>
 | 
						|
                  <el-option v-for="dict in modelList" :key="dict.id" :label="dict.name" :value="dict.id" />
 | 
						|
                </el-select>
 | 
						|
              </el-form-item>
 | 
						|
            </el-col>
 | 
						|
            <!-- <el-col :span="12">
 | 
						|
              <el-form-item label="单位平方数" prop="area">
 | 
						|
                <el-input v-model="dataForm.area" placeholder="请输入单位平方数" />
 | 
						|
              </el-form-item>
 | 
						|
            </el-col> -->
 | 
						|
          </el-row>
 | 
						|
          <!-- <el-row :gutter="20">
 | 
						|
            <el-col :span="24">
 | 
						|
              <el-form-item label="完成单位产品用时" prop="processTime">
 | 
						|
                <el-input v-model="dataForm.processTime" placeholder="请输入完成单位产品用时" />
 | 
						|
              </el-form-item>
 | 
						|
            </el-col>
 | 
						|
          </el-row> -->
 | 
						|
        </el-form>
 | 
						|
 | 
						|
        <!-- <small-title
 | 
						|
					style="margin: 16px 0; padding-left: 8px"
 | 
						|
					:no-padding="true">
 | 
						|
					产品属性列表
 | 
						|
				</small-title>
 | 
						|
 | 
						|
				<div class="attr-list">
 | 
						|
					<base-table
 | 
						|
						:table-props="tableProps"
 | 
						|
						:page="listQuery.pageNo"
 | 
						|
						:limit="listQuery.pageSize"
 | 
						|
						:add-button-show="isdetail ? null : '添加属性'"
 | 
						|
						@emitButtonClick="addNew()"
 | 
						|
						:table-data="productAttributeList">
 | 
						|
						<method-btn
 | 
						|
							v-if="!isdetail"
 | 
						|
							slot="handleBtn"
 | 
						|
							:width="120"
 | 
						|
							label="操作"
 | 
						|
							:method-list="tableBtn"
 | 
						|
							@clickBtn="handleClick" />
 | 
						|
					</base-table>
 | 
						|
					<pagination
 | 
						|
						v-show="listQuery.total > 0"
 | 
						|
						:total="listQuery.total"
 | 
						|
						:page.sync="listQuery.pageNo"
 | 
						|
						:limit.sync="listQuery.pageSize"
 | 
						|
						:page-sizes="[5, 10, 15]"
 | 
						|
						@pagination="getList" />
 | 
						|
				</div> -->
 | 
						|
      <!-- </div> -->
 | 
						|
    <!-- </div> -->
 | 
						|
 | 
						|
    <!-- <div style="position: absolute; bottom: 24px; right: 24px">
 | 
						|
			<el-button style="margin-right: 10px" @click="goback()">返回</el-button>
 | 
						|
			<el-button v-if="isdetail" type="primary" @click="goEdit()">
 | 
						|
				编辑
 | 
						|
			</el-button>
 | 
						|
			<span v-if="!isdetail">
 | 
						|
				<el-button type="primary" @click="dataFormSubmit()">保存</el-button>
 | 
						|
				<el-button
 | 
						|
					v-if="dataForm.id && !isdetail"
 | 
						|
					type="primary"
 | 
						|
					@click="addNew()">
 | 
						|
					添加属性
 | 
						|
				</el-button>
 | 
						|
			</span>
 | 
						|
		</div> -->
 | 
						|
    <template slot="footer">
 | 
						|
      <el-button style="" @click="goback()">取消</el-button>
 | 
						|
      <!-- <el-button v-if="isdetail" type="primary" @click="goEdit()">
 | 
						|
				编辑
 | 
						|
			</el-button> -->
 | 
						|
      <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
 | 
						|
    </template>
 | 
						|
  </el-dialog>
 | 
						|
</template>
 | 
						|
 | 
						|
<script>
 | 
						|
 | 
						|
import {
 | 
						|
	createPacking,
 | 
						|
	updatePacking,
 | 
						|
  getPacking,
 | 
						|
  getWorkOrderList,
 | 
						|
  getCode,
 | 
						|
  getCustomerList,
 | 
						|
  getModelList
 | 
						|
} from '@/api/base/packingInfo.js';
 | 
						|
// import productAttrAdd from './attr-add';
 | 
						|
import { parseTime } from '../mixins/code-filter';
 | 
						|
import SmallTitle from './SmallTitle';
 | 
						|
 | 
						|
const tableBtn = [
 | 
						|
	{
 | 
						|
		type: 'edit',
 | 
						|
		btnName: '编辑',
 | 
						|
	},
 | 
						|
	{
 | 
						|
		type: 'delete',
 | 
						|
		btnName: '删除',
 | 
						|
	},
 | 
						|
];
 | 
						|
const tableProps = [
 | 
						|
	{
 | 
						|
		prop: 'createTime',
 | 
						|
		label: '添加时间',
 | 
						|
		filter: parseTime,
 | 
						|
	},
 | 
						|
	{
 | 
						|
		prop: 'name',
 | 
						|
		label: '属性名',
 | 
						|
	},
 | 
						|
	{
 | 
						|
		prop: 'value',
 | 
						|
		label: '属性值',
 | 
						|
	},
 | 
						|
];
 | 
						|
 | 
						|
export default {
 | 
						|
	components: { SmallTitle },
 | 
						|
	data() {
 | 
						|
		return {
 | 
						|
			visible: false,
 | 
						|
			addOrUpdateVisible: false,
 | 
						|
			tableBtn,
 | 
						|
      tableProps,
 | 
						|
      customerList: [],
 | 
						|
      modelList:[],
 | 
						|
      workOrderList:[],
 | 
						|
			productAttributeList: [],
 | 
						|
			dataForm: {
 | 
						|
				id: null,
 | 
						|
				// name: '', // 产品名称
 | 
						|
        packagingCode: '', // 产品编码
 | 
						|
				// area: 0, // 单位平方数(float only)
 | 
						|
        modelId: null, // 产品类型id
 | 
						|
        workOrderId: null, // 单位产品用时 (s)
 | 
						|
        customerId: '', // 规格
 | 
						|
        content: '', // 单位id
 | 
						|
			},
 | 
						|
			listQuery: {
 | 
						|
				pageSize: 10,
 | 
						|
				pageNo: 1,
 | 
						|
				total: 0,
 | 
						|
			},
 | 
						|
			dataRule: {
 | 
						|
        content: [
 | 
						|
					{
 | 
						|
						required: true,
 | 
						|
						message: '内容不能为空',
 | 
						|
						trigger: 'blur',
 | 
						|
					},
 | 
						|
					// {
 | 
						|
					// 	type: 'number',
 | 
						|
					// 	message: '产品编码为数字类型',
 | 
						|
					// 	trigger: 'blur',
 | 
						|
					// 	transfom: 'val => Number(val)',
 | 
						|
					// },
 | 
						|
				],
 | 
						|
        workOrderId: [
 | 
						|
					{
 | 
						|
						required: true,
 | 
						|
						message: '所属工单不能为空',
 | 
						|
						trigger: 'change',
 | 
						|
					},
 | 
						|
				],
 | 
						|
				typeDictValue: [
 | 
						|
					{
 | 
						|
						required: true,
 | 
						|
						message: '产品类型不能为空',
 | 
						|
						trigger: 'blur',
 | 
						|
					},
 | 
						|
				],
 | 
						|
				area: [
 | 
						|
					{
 | 
						|
						type: 'number',
 | 
						|
						message: '请输入正确的数值',
 | 
						|
						trigger: 'change',
 | 
						|
						transform: (val) => Number(val),
 | 
						|
					},
 | 
						|
				],
 | 
						|
				processTime: [
 | 
						|
					{
 | 
						|
						required: true,
 | 
						|
						message: '完成单位产品用时不能为空',
 | 
						|
						trigger: 'blur',
 | 
						|
					},
 | 
						|
					{
 | 
						|
						type: 'number',
 | 
						|
						message: '请输入正确的数值',
 | 
						|
						trigger: 'blur',
 | 
						|
						transform: (val) => Number(val),
 | 
						|
					},
 | 
						|
				],
 | 
						|
			},
 | 
						|
			// isdetail: false,
 | 
						|
		};
 | 
						|
  },
 | 
						|
	methods: {
 | 
						|
		// initData() {
 | 
						|
		// 	this.productAttributeList.splice(0);
 | 
						|
		// 	this.listQuery.total = 0;
 | 
						|
		// },
 | 
						|
    init(id) {
 | 
						|
      this.getDict()
 | 
						|
			// this.initData();
 | 
						|
			// this.isdetail = isdetail || false;
 | 
						|
			this.dataForm.id = id || null;
 | 
						|
			this.visible = true;
 | 
						|
 | 
						|
			this.$nextTick(() => {
 | 
						|
				this.$refs['dataForm'].resetFields();
 | 
						|
 | 
						|
				if (this.dataForm.id) {
 | 
						|
					// 获取产品详情
 | 
						|
					getPacking(id).then((response) => {
 | 
						|
						this.dataForm = response.data;
 | 
						|
					});
 | 
						|
					// 获取产品的属性列表
 | 
						|
					// this.getList();
 | 
						|
				} else {
 | 
						|
					getCode().then((res) => {
 | 
						|
            this.dataForm.packagingCode = res.data;
 | 
						|
					});
 | 
						|
				}
 | 
						|
			});
 | 
						|
		},
 | 
						|
 | 
						|
		getDict() {
 | 
						|
      // 获取产品的属性列表
 | 
						|
      getCustomerList().then((response) => {
 | 
						|
        console.log(response);
 | 
						|
        this.customerList = response.data
 | 
						|
        // this.listQuery.total = response.data.total;
 | 
						|
      })
 | 
						|
      getModelList().then((response) => {
 | 
						|
        console.log(response);
 | 
						|
        this.modelList = response.data
 | 
						|
        // this.listQuery.total = response.data.total;
 | 
						|
      })
 | 
						|
      getWorkOrderList().then((response) => {
 | 
						|
        // console.log(response);
 | 
						|
        this.workOrderList = response.data
 | 
						|
				// this.listQuery.total = response.data.total;
 | 
						|
			})
 | 
						|
		},
 | 
						|
		// handleClick(raw) {
 | 
						|
		// 	if (raw.type === 'delete') {
 | 
						|
		// 		this.$confirm(
 | 
						|
		// 			`确定对${
 | 
						|
		// 				raw.data.name
 | 
						|
		// 					? '[名称=' + raw.data.name + ']'
 | 
						|
		// 					: '[序号=' + raw.data._pageIndex + ']'
 | 
						|
		// 			}进行删除操作?`,
 | 
						|
		// 			'提示',
 | 
						|
		// 			{
 | 
						|
		// 				confirmButtonText: '确定',
 | 
						|
		// 				cancelButtonText: '取消',
 | 
						|
		// 				type: 'warning',
 | 
						|
		// 			}
 | 
						|
		// 		)
 | 
						|
		// 			.then(() => {
 | 
						|
		// 				deleteProductAttr(raw.data.id).then(({ data }) => {
 | 
						|
		// 					this.$message({
 | 
						|
		// 						message: '操作成功',
 | 
						|
		// 						type: 'success',
 | 
						|
		// 						duration: 1500,
 | 
						|
		// 						onClose: () => {
 | 
						|
		// 							this.getList();
 | 
						|
		// 						},
 | 
						|
		// 					});
 | 
						|
		// 				});
 | 
						|
		// 			})
 | 
						|
		// 			.catch(() => {});
 | 
						|
		// 	} else {
 | 
						|
		// 		this.addNew(raw.data.id);
 | 
						|
		// 	}
 | 
						|
		// },
 | 
						|
		// 表单提交
 | 
						|
		dataFormSubmit() {
 | 
						|
			this.$refs['dataForm'].validate((valid) => {
 | 
						|
				if (valid) {
 | 
						|
					// 修改的提交
 | 
						|
					if (this.dataForm.id) {
 | 
						|
						updatePacking(this.dataForm).then((response) => {
 | 
						|
							this.$modal.msgSuccess('修改成功');
 | 
						|
							this.visible = false;
 | 
						|
							this.$emit('refreshDataList');
 | 
						|
						});
 | 
						|
						return;
 | 
						|
					}
 | 
						|
					// 添加的提交
 | 
						|
					createPacking(this.dataForm).then((response) => {
 | 
						|
						this.$modal.msgSuccess('新增成功');
 | 
						|
						this.visible = false;
 | 
						|
						this.$emit('refreshDataList');
 | 
						|
					});
 | 
						|
				}
 | 
						|
			});
 | 
						|
		},
 | 
						|
		// goEdit() {
 | 
						|
		// 	this.isdetail = false;
 | 
						|
		// },
 | 
						|
		// // 新增 / 修改
 | 
						|
		// addNew(id) {
 | 
						|
		// 	this.addOrUpdateVisible = true;
 | 
						|
		// 	this.$nextTick(() => {
 | 
						|
		// 		this.$refs.addOrUpdate.init(id);
 | 
						|
		// 	});
 | 
						|
		// },
 | 
						|
		goback() {
 | 
						|
			this.$emit('refreshDataList');
 | 
						|
			this.visible = false;
 | 
						|
			// this.initData();
 | 
						|
		},
 | 
						|
	},
 | 
						|
};
 | 
						|
</script>
 | 
						|
 | 
						|
<!-- <style scoped>
 | 
						|
.drawer >>> .el-drawer {
 | 
						|
	border-radius: 8px 0 0 8px;
 | 
						|
	display: flex;
 | 
						|
	flex-direction: column;
 | 
						|
}
 | 
						|
 | 
						|
.drawer >>> .el-form-item__label {
 | 
						|
	padding: 0;
 | 
						|
}
 | 
						|
 | 
						|
.drawer >>> .el-drawer__header {
 | 
						|
	margin: 0;
 | 
						|
	padding: 32px 32px 24px;
 | 
						|
	border-bottom: 1px solid #dcdfe6;
 | 
						|
}
 | 
						|
.drawer >>> .el-drawer__body {
 | 
						|
	flex: 1;
 | 
						|
	height: 1px;
 | 
						|
	display: flex;
 | 
						|
	flex-direction: column;
 | 
						|
}
 | 
						|
 | 
						|
.drawer >>> .content {
 | 
						|
	padding: 30px 24px;
 | 
						|
	flex: 1;
 | 
						|
	display: flex;
 | 
						|
	flex-direction: column;
 | 
						|
	/* height: 100%; */
 | 
						|
}
 | 
						|
 | 
						|
.drawer >>> .visual-part {
 | 
						|
	flex: 1 auto;
 | 
						|
	max-height: 76vh;
 | 
						|
	overflow: hidden;
 | 
						|
	overflow-y: scroll;
 | 
						|
	padding-right: 10px; /* 调整滚动条样式 */
 | 
						|
}
 | 
						|
 | 
						|
.drawer >>> .el-form,
 | 
						|
.drawer >>> .attr-list {
 | 
						|
	padding: 0 16px;
 | 
						|
}
 | 
						|
 | 
						|
.drawer-body__footer {
 | 
						|
	display: flex;
 | 
						|
	justify-content: flex-end;
 | 
						|
	padding: 18px;
 | 
						|
}
 | 
						|
</style> -->
 | 
						|
<style>
 | 
						|
 | 
						|
.baseDialog .el-dialog__header {
 | 
						|
  font-size: 16px;
 | 
						|
  color: rgba(0, 0, 0, 0.85);
 | 
						|
  font-weight: 500;
 | 
						|
  padding: 13px 24px;
 | 
						|
  border-bottom: 1px solid #e9e9e9;
 | 
						|
}
 | 
						|
.baseDialog .el-dialog__header .titleStyle::before{
 | 
						|
  content: '';
 | 
						|
  display: inline-block;
 | 
						|
  width: 4px;
 | 
						|
  height: 16px;
 | 
						|
  background-color: #0B58FF;
 | 
						|
  border-radius: 1px;
 | 
						|
  margin-right: 8px;
 | 
						|
  position: relative;
 | 
						|
  top: 2px;
 | 
						|
}
 | 
						|
.baseDialog .el-dialog__body {
 | 
						|
  padding-left: 24px;
 | 
						|
  padding-right: 24px;
 | 
						|
}
 | 
						|
.baseDialog .btnTextStyle {
 | 
						|
  letter-spacing:6px;
 | 
						|
  padding: 9px 10px 9px 16px;
 | 
						|
  font-size: 14px;
 | 
						|
}
 | 
						|
 | 
						|
</style>
 |