|
@@ -0,0 +1,467 @@
|
|
|
+<template>
|
|
|
+ <el-form label-position="left" label-width="100px" size="mini" ref="formRef" :model="formData">
|
|
|
+ <el-row :gutter="10">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="供应商名称">
|
|
|
+ <el-select disabled style="width:100%" :value="business_companyNo">
|
|
|
+ <el-option v-for="(item, index) in companyList" :key="item.supplierNo + item.id + index"
|
|
|
+ :label="item.supplierName" :disabled="item.status !== '1'" :value="item.supplierNo">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="客户名称" prop="companyName">
|
|
|
+ <el-input placeholder="客户名称" v-model="formData.companyName" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row :gutter="10">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="业务员公司" prop="">
|
|
|
+ <search-work-company :placeholder="'业务公司'" :size="'mini'" @searchChange="company_idsearchChange" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="销售数量" prop="num">
|
|
|
+ <el-input placeholder="销售数量" v-model="formData.num" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row :gutter="10">
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="是否确定售价" prop="is_determine_price">
|
|
|
+ <el-select placeholder="是否确定售价" v-model="formData.is_determine_price">
|
|
|
+ <el-option value="0" label="否" />
|
|
|
+ <el-option value="1" label="是" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="服务费比例" prop="service_proportion">
|
|
|
+ <el-input placeholder="服务费比例" v-model="formData.service_proportion" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="期望服务费" prop="expect_service">
|
|
|
+ <el-input placeholder="期望服务费" v-model="formData.expect_service" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="服务费比例">
|
|
|
+ <el-input placeholder="服务费比例" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+
|
|
|
+ <el-row :gutter="10">
|
|
|
+ <el-col :span="5">
|
|
|
+ <el-form-item label="有效期" prop="preservation_day">
|
|
|
+ <digital-input :placeholder="'有效期'" :min="0" :max="100000000000" :position="'right'" :precision="0"
|
|
|
+ :size="'mini'" :controls="false" :append="'天'" @reschange="number_change($event, 'preservation_day')" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="5">
|
|
|
+ <el-form-item label="物流时间" prop="delivery_day">
|
|
|
+ <digital-input :placeholder="'物流时间'" :min="0" :max="100000000000" :position="'right'" :precision="0"
|
|
|
+ :size="'mini'" :controls="false" :append="'天'" @reschange="number_change($event, 'delivery_day')" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="5">
|
|
|
+ <el-form-item label="生产工期" prop="make_day">
|
|
|
+ <digital-input :placeholder="'生产工期'" :min="0" :max="100000000000" :position="'right'" :precision="0"
|
|
|
+ :size="'mini'" :controls="false" :append="'天'" @reschange="number_change($event, 'make_day')" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="4">
|
|
|
+ <el-form-item label="税点" label-width="60px" prop="tax">
|
|
|
+ <digital-input :placeholder="'税点'" :min="0" :max="100000000000" :position="'right'" :precision="0"
|
|
|
+ :size="'mini'" :controls="false" :append="'%'" @reschange="number_change($event, 'tax')" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="5">
|
|
|
+ <el-form-item label="单位" label-width="60px" prop="unit_id">
|
|
|
+ <search-unit :value="formData.unit_id" :size="'mini'" placeholder="单位" @searchChange="unitsearchChange" />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row :gutter="10">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="品牌" prop="brand_id">
|
|
|
+ <search-brand size="mini" :value="brandid" placeholder="请选择品牌" @searchChange="brandidsearchChange" />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="分类" prop="cat_id">
|
|
|
+ <search-sort :placeholder="'分类'" size="mini" @searchChange="cat_id_change" />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="商品名称" prop="good_name">
|
|
|
+ <el-input placeholder="商品名称" v-model="formData.good_name" />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="产地" prop="origin_place">
|
|
|
+ <select-area :placeholder="'产地'" size="mini" @selectChange="selectAreaorigin_place($event, 'origin_place')" />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="发货地" prop="delivery_place">
|
|
|
+ <select-area :placeholder="'发货地'" size="mini"
|
|
|
+ @selectChange="selectAreaorigin_place($event, 'delivery_place')" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-table :data="speclist" :size="'mini'" border style="width: 100%" height="164px">
|
|
|
+ <el-table-column prop="spec_value" label="规格类型" />
|
|
|
+ <el-table-column prop="spec_value_value" label="规格值" />
|
|
|
+ <el-table-column fixed="right">
|
|
|
+ <template slot="header" slot-scope="scope">
|
|
|
+ <span>操作</span>
|
|
|
+ <el-tooltip class="item" effect="dark" content="添加规格类型" placement="top">
|
|
|
+ <i class="el-icon-circle-plus-outline fr" style="font-size: 18px; margin-top: 2px"
|
|
|
+ @click="() => handleSpecModal(-1)" />
|
|
|
+ </el-tooltip>
|
|
|
+ </template>
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-tooltip effect="dark" content="修改" placement="top">
|
|
|
+ <i class="el-icon-edit tb-icon" @click="() => handleSpecModal(scope.$index)"></i>
|
|
|
+ </el-tooltip>
|
|
|
+
|
|
|
+ <el-tooltip effect="dark" content="删除" placement="top">
|
|
|
+ <i class="el-icon-delete tb-icon"></i>
|
|
|
+ </el-tooltip>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+
|
|
|
+ <SpecModal :index="modalIndex" :showModel.sync="showModal" :sitem="spec" @refresh="handleEditSpec" />
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row :gutter="10">
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="总重量" prop="weight">
|
|
|
+ <digital-input :placeholder="'总重量'" :min="0" :max="100000000000" :position="'right'" :precision="0"
|
|
|
+ :size="'mini'" :controls="false" :append="'g'" @reschange="number_change($event, 'weight')" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="供应区域" prop="supply_area">
|
|
|
+ <el-select v-model="formData.supply_area" placeholder="供应区域">
|
|
|
+ <el-option label="全国" value="1" />
|
|
|
+ <el-option label="全国除偏移" value="2" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="付款方式" prop="pay_way">
|
|
|
+ <el-select v-model="formData.pay_way" placeholder="付款方式" style="wdith:100%" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="裸价" label-width="60px" prop="cgd_charge">
|
|
|
+ <digital-input :placeholder="'裸价'" :min="0" :max="100000000000" :position="'right'" :precision="3"
|
|
|
+ :size="'mini'" :controls="false" :append="'元'" @reschange="number_change($event, 'cgd_charge')" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row :gutter="10">
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="贵金属重量" prop="gold_weight">
|
|
|
+ <digital-input :placeholder="'金属重量'" :min="0" :max="100000000000" :position="'right'" :precision="3"
|
|
|
+ :size="'mini'" :controls="false" :append="'g'" @reschange="number_change($event, 'gold_weight')" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="贵金属种类" prop="noble_metal">
|
|
|
+ <search-metal-kind :value="formData.noble_metal" :size="'mini'" :placeholder="'贵金属种类'"
|
|
|
+ @searchChange="noble_metalsearchChange" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row :gutter="10">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="配置要求" prop="config">
|
|
|
+ <el-select placeholder="配置要求" v-model="formData.config">
|
|
|
+ <el-option v-for="(item, index) in configOptions" :key="index" :label="item" :value="item" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="其他配置要求" prop="otherConfig">
|
|
|
+ <el-input v-model="formData.otherConfig" placeholder="其他配置要求" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row>
|
|
|
+ <el-form-item label="备注" prop="remark">
|
|
|
+ <el-input type="textarea" placeholder="备注" v-model="formData.remark" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row>
|
|
|
+ <el-form-item label="工艺说明">
|
|
|
+ <el-input placeholder="工艺说明" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-row>
|
|
|
+ <!-- v-if="formData.good_img" -->
|
|
|
+ <el-row>
|
|
|
+ <el-form-item label="商品图片(<1mb)" prop="good_img" class="activity-upload">
|
|
|
+ <div class="btnupload" style="position: relative; margin-left: 10px" v-if="formData.good_img">
|
|
|
+ <img :src="formData.good_img" class="avatar" />
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <i class="el-icon-plus avatar-uploader-icon" style="position: relative; width: 50px; height: 50px">
|
|
|
+ <file-upload class="Upload" :accept="'.jpg,.png,.jpeg'" :multiple="true" :disabled="type === 'view'"
|
|
|
+ :uploadcondition="beforeAvatarUpload" @UploadErrorEvent="UploadErrorEventgood_img"
|
|
|
+ @UploadSuccessEvent="UploadSuccessEventgood_img"></file-upload>
|
|
|
+ </i>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row>
|
|
|
+ <div style="display:flex;justify-content:flex-end;width:100%;margin-bottom: 10px;">
|
|
|
+ <el-button type="primary" size="small" @click="handleConfirm">保存</el-button>
|
|
|
+ </div>
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+</template>
|
|
|
+
|
|
|
+
|
|
|
+<script>
|
|
|
+import { mapGetters } from "vuex";
|
|
|
+import { get_company_list } from "@/utils/auth";
|
|
|
+import SpecModal from './spec-modal.vue';
|
|
|
+import asyncRequest from "@/apis/report";
|
|
|
+
|
|
|
+export default {
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ spec: {},
|
|
|
+ speclist: [],
|
|
|
+ companyList: [],
|
|
|
+ showModal: false,
|
|
|
+ modalIndex: '',
|
|
|
+ configOptions: ["证书", "包装盒", "绒布袋", "标签", "其他"],
|
|
|
+ formRef: null,
|
|
|
+ formData: {
|
|
|
+ num: 0,
|
|
|
+ companyName: "",
|
|
|
+ is_determine_price: "",
|
|
|
+ is_determine_price: "0",
|
|
|
+ service_proportion: "",
|
|
|
+ expect_service: "",
|
|
|
+ brand_id: "",
|
|
|
+ preservation_day: "",
|
|
|
+ delivery_day: "",
|
|
|
+ make_day: "",
|
|
|
+ tax: "",
|
|
|
+ unit_id: "",
|
|
|
+ cat_id: "",
|
|
|
+ good_name: "",
|
|
|
+ origin_place: [],
|
|
|
+ delivery_place: [],
|
|
|
+ weight: "",
|
|
|
+ supply_area: "",
|
|
|
+ pay_way: "",
|
|
|
+ cgd_charge: "",
|
|
|
+ gold_weight: "",
|
|
|
+ noble_metal: "",
|
|
|
+ config: "",
|
|
|
+ otherConfig: "",
|
|
|
+ good_img: ""
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ components: {
|
|
|
+ SpecModal
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ ...mapGetters(['business_companyNo'])
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.companyList = get_company_list() ? JSON.parse(get_company_list()) : [];
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ handleSpecModal(index) {
|
|
|
+ this.showModal = true;
|
|
|
+ this.modalIndex = index;
|
|
|
+ this.spec = index >= 0 ? this.speclist[index] : {};
|
|
|
+ },
|
|
|
+ handleEditSpec(spec) {
|
|
|
+ const shallowSpacData = { ...spec };
|
|
|
+ if (this.modalIndex === -1) {
|
|
|
+ this.speclist.push(shallowSpacData);
|
|
|
+ return
|
|
|
+ }
|
|
|
+ this.$set(this.speclist, this.modalIndex, shallowSpacData);
|
|
|
+ },
|
|
|
+ async brandidsearchChange(e) {
|
|
|
+ const { id } = e ?? {};
|
|
|
+ this.formData.brand_id = id;
|
|
|
+ },
|
|
|
+ async number_change(e, key) {
|
|
|
+ this.formData[key] = e + "" || "0"
|
|
|
+ },
|
|
|
+ unitsearchChange(e) {
|
|
|
+ const { code } = e;
|
|
|
+ this.formData.unit_id = code;
|
|
|
+ },
|
|
|
+ async cat_id_change(e) {
|
|
|
+ const { pid, id } = e;
|
|
|
+ // if (pid === "6") {
|
|
|
+ // this.$message.warning("不允许反馈贵金属商品!");
|
|
|
+ // this.ruleForm.cat_id = [];
|
|
|
+ // } else {
|
|
|
+ // this.ruleForm.cat_id = id ? [id] : [];
|
|
|
+ // }
|
|
|
+ this.formData.cat_id = id;
|
|
|
+ },
|
|
|
+ selectAreaorigin_place(e, key) {
|
|
|
+ this.formData[key].origin_place = e;
|
|
|
+ },
|
|
|
+ //贵金属种类选择
|
|
|
+ async noble_metalsearchChange(e) {
|
|
|
+ const { id, code, label } = e;
|
|
|
+ this.formData.noble_metal = id || "";
|
|
|
+ },
|
|
|
+ UploadErrorEventgood_img(res) {
|
|
|
+ this.imgUploadError(1, res);
|
|
|
+ },
|
|
|
+ imgUploadError(type, res) {
|
|
|
+ if (res !== "break") {
|
|
|
+ this.$message.error("图片上传失败!");
|
|
|
+ // this.$refs.ruleForm.validateField(
|
|
|
+ // type === 1 ? "good_img" : type === 2 ? "good_img" : ""
|
|
|
+ // );
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //判断图片规格
|
|
|
+ beforeAvatarUpload(file) {
|
|
|
+ let isJPG = false;
|
|
|
+ if (
|
|
|
+ file.type === "image/jpg" ||
|
|
|
+ file.type === "image/png" ||
|
|
|
+ file.type === "image/jpeg"
|
|
|
+ ) {
|
|
|
+ isJPG = true;
|
|
|
+ }
|
|
|
+ const isLt2M = file.size / 1024 / 1024 < 1;
|
|
|
+ if (!isJPG) {
|
|
|
+ this.$message.error("图片格式不正确!");
|
|
|
+ }
|
|
|
+ if (!isLt2M) {
|
|
|
+ this.$message.error("图片大小不能超过 1MB!");
|
|
|
+ }
|
|
|
+ return isJPG && isLt2M;
|
|
|
+ },
|
|
|
+ closeImg(index, key) {
|
|
|
+ this.formData[key].splice(index, 1);
|
|
|
+ // this.$refs.ruleForm.validateField(key);
|
|
|
+ },
|
|
|
+ async UploadSuccessEventgood_img(data) {
|
|
|
+ await this.UploadSuccessEvent(1, data);
|
|
|
+ },
|
|
|
+ //图片上传成功
|
|
|
+ async UploadSuccessEvent(type, data) {
|
|
|
+ // if (this.ruleForm.good_img.length > 10) {
|
|
|
+ // this.$message.warning("上传图片最多不能超过10张");
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ const { url } = data;
|
|
|
+ if (url === "noToken") {
|
|
|
+ await this.logout();
|
|
|
+ } else if (url === "noSupplierNo") {
|
|
|
+ this.$notify({
|
|
|
+ title: "当前供应商参数错误",
|
|
|
+ dangerouslyUseHTMLString: true,
|
|
|
+ message: "5秒后,请您重新登录!",
|
|
|
+ });
|
|
|
+ await setTimeout(async () => {
|
|
|
+ await this.logout();
|
|
|
+ }, 5000);
|
|
|
+ } else {
|
|
|
+ if (type === 1) {
|
|
|
+ this.formData.good_img = url
|
|
|
+ // this.$refs.ruleForm.validateField("good_img");
|
|
|
+ } else if (type === 2) {
|
|
|
+ this.formData.good_img = url
|
|
|
+ // this.$refs.ruleForm.validateField("good_img");
|
|
|
+ }
|
|
|
+ this.$message.success("图片上传成功!");
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleConfirm() {
|
|
|
+ this.$refs.formRef.validate(async isValid => {
|
|
|
+ if (!isValid) return;
|
|
|
+
|
|
|
+ const spec_list = this.speclist;
|
|
|
+ const supplierNo = this.business_companyNo;
|
|
|
+
|
|
|
+ const {
|
|
|
+ num,
|
|
|
+ companyName,
|
|
|
+ is_determine_price,
|
|
|
+ cgd_charge,
|
|
|
+ service_proportion,
|
|
|
+ expect_service,
|
|
|
+ brand_id,
|
|
|
+ preservation_day,
|
|
|
+ delivery_day,
|
|
|
+ make_day,
|
|
|
+ tax,
|
|
|
+ unit_id,
|
|
|
+ cat_id,
|
|
|
+ good_name,
|
|
|
+ delivery_place,
|
|
|
+ origin_place,
|
|
|
+ weight,
|
|
|
+ supply_area,
|
|
|
+ pay_way,
|
|
|
+ gold_weight,
|
|
|
+ noble_metal,
|
|
|
+ config,
|
|
|
+ other_config,
|
|
|
+ remark,
|
|
|
+ cost_desc,
|
|
|
+
|
|
|
+ } = this.formData;
|
|
|
+
|
|
|
+ const params = {
|
|
|
+ customerCode,
|
|
|
+ companyName,
|
|
|
+ num
|
|
|
+ }
|
|
|
+
|
|
|
+ // const { data, code, message } = await asyncRequest.add(this.formData);
|
|
|
+
|
|
|
+ // if(code === 0){
|
|
|
+ // this.$router.push("/report/index");
|
|
|
+ // }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|