861 lines
33 KiB
Vue
861 lines
33 KiB
Vue
<template>
|
||
<view>
|
||
<top-bar></top-bar>
|
||
<common-header></common-header>
|
||
<category-bar></category-bar>
|
||
|
||
<view class="page-nav">
|
||
<el-breadcrumb separator="/">
|
||
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
|
||
<el-breadcrumb-item>
|
||
<navigator style="display: inline-block;" url="/pages/process/list">加工单</navigator>
|
||
</el-breadcrumb-item>
|
||
<el-breadcrumb-item>发布加工单</el-breadcrumb-item>
|
||
</el-breadcrumb>
|
||
</view>
|
||
|
||
<view class="form-view">
|
||
|
||
<view class="m-20">
|
||
<view class="title-main">请填写加工单</view>
|
||
<view class="title-sub">加工单信息越完整,加工商报价越精准</view>
|
||
</view>
|
||
|
||
<!-- <vk-data-form ref="form1" v-model="form1.data" :action="form1.props.action" :columns="form1.props.columns"-->
|
||
<!-- :rules="form1.props.rules" :form-type="form1.props.formType" :loading.sync="form1.props.loading"-->
|
||
<!-- :before-action="form1.props.beforeAction" label-width="140px" cancel-text="保存草稿" submit-text="提交加工单"-->
|
||
<!-- @success="onFormSuccess" :footer-show="false">-->
|
||
<!-- </vk-data-form>-->
|
||
|
||
<el-form ref="form" :model="form1.data" label-width="120px">
|
||
<view class="form-title-wrap">
|
||
<view class="goods-info-title">
|
||
<view class="form-title">
|
||
加工分类
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
<view class="p-30">
|
||
<!-- <el-form-item label="品名/材质" required>-->
|
||
<!-- <el-input v-model="form1.data.title" disabled/>-->
|
||
<!-- </el-form-item>-->
|
||
<view class="flex justify-start items-center my-20">
|
||
<text class="text-30">点击添加加工商品</text>
|
||
<text class="text-gray text-25">(至少选择1个商品,最多选择5个商品)</text>
|
||
</view>
|
||
<view class="flex justify-start items-start flex-wrap mb-40">
|
||
<text class="product-item"
|
||
:class="[form1.data.productList.includes(item._id) ? 'product-item-active' : '']"
|
||
v-for="(item, index) in productList"
|
||
:key="index" @click="selectGoods(item)">{{ item.name }}
|
||
</text>
|
||
</view>
|
||
<view class="form-title-wrap mb-25">
|
||
<view class="goods-info-title">
|
||
<view class="form-title">
|
||
加工信息
|
||
</view>
|
||
</view>
|
||
<view class="sales-code flex justify-end items-center">
|
||
<text>金久信业务员编号:</text>
|
||
<el-input v-model="form1.data.salesCode" placeholder="请输入编号没有则留空" size="small"/>
|
||
</view>
|
||
</view>
|
||
<el-form-item label="加工产品简述:">
|
||
<el-input v-model="form1.data.detail" placeholder="如产品名称、加工内容等"/>
|
||
</el-form-item>
|
||
<el-form-item label="加工量" required>
|
||
<el-input v-model="form1.data.num"/>
|
||
</el-form-item>
|
||
<el-form-item label="附件内容" required>
|
||
<!-- <el-upload action="#" :before-upload="upload">-->
|
||
<vk-data-upload v-model="form1.data.files"
|
||
:on-preview="previewUpload"
|
||
accept=".pdf" list-type="text"/>
|
||
<!-- <data-file theme="two-tone" size="24" :fill="['#333' ,'#ffffff']" strokeLinecap="square"-->
|
||
<!-- v-else/>-->
|
||
<!-- <el-image v-else :url="form1.data.attachment" fit="cover"/>-->
|
||
|
||
</el-form-item>
|
||
</view>
|
||
|
||
<view class="form-title-wrap">
|
||
<view class="goods-info-title">
|
||
<view class="form-title">
|
||
加工产品交货地址
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="my-25">
|
||
<el-row :gutter="10">
|
||
<el-col :span="6">
|
||
<vk-data-input-address v-model="form1.data.addressRegion" placeholder="请选择省市区"
|
||
:level="3" class="w-100p"/>
|
||
</el-col>
|
||
<el-col :span="18">
|
||
<el-input v-model="form1.data.addressDetail" placeholder="请输入详细地址"/>
|
||
</el-col>
|
||
</el-row>
|
||
</view>
|
||
|
||
<view class="form-title-wrap">
|
||
<view class="goods-info-title">
|
||
<view class="form-title">
|
||
加工商其他要求
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
<view class="p-30">
|
||
<el-radio-group v-model="hasRequire" class="my-20">
|
||
<el-radio :label="true">有</el-radio>
|
||
<el-radio :label="false">无</el-radio>
|
||
</el-radio-group>
|
||
<view class="pos-r">
|
||
<el-input type="textarea" v-model="form1.data.remark" :disabled="!hasRequire"
|
||
placeholder="复杂加工提供图纸、简单加工详细说明加工内容,如:镀锌、刷漆、防腐、折弯、裁剪等"
|
||
:rows="15"/>
|
||
<view class="remark-upload">
|
||
<view class="flex flex-col justify-start items-start">
|
||
<p class="tips mb-20">仅限PDF格式附件或合同,非协议合同将读取为合同附件,请仔细核查</p>
|
||
<vk-data-upload v-model="form1.data.multiFiles" accept=".pdf"
|
||
:on-preview="previewUpload"
|
||
list-type="text">
|
||
</vk-data-upload>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
<view class="form-title-wrap">
|
||
<view class="goods-info-title">
|
||
<view class="form-title">
|
||
发票要求
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="mb-20 flex justify-start items-center">
|
||
<text>开票时间:</text>
|
||
<el-radio-group v-model="form1.data.writeInvoiceTime">
|
||
<el-radio :label="0">付款当月(限20号之前付款,20号之后付款次月开票)</el-radio>
|
||
<el-radio :label="1">付款后次月</el-radio>
|
||
<el-radio :label="2">付款前</el-radio>
|
||
</el-radio-group>
|
||
</view>
|
||
<view class="mb-20 flex justify-start items-center">
|
||
<view class="flex-1 flex justify-start items-center">
|
||
<text style="width: 30%">纳税人身份:</text>
|
||
<el-select v-model="form1.data.taxType" placeholder="纳税人身份" style="width: 100%">
|
||
<el-option
|
||
v-for="item in ['一般纳税人', '小规模公司', '个体工商户']"
|
||
:key="item"
|
||
:label="item"
|
||
:value="item">
|
||
</el-option>
|
||
</el-select>
|
||
</view>
|
||
<view class="flex-1 flex justify-start items-center ml-20">
|
||
<text style="width: 30%">发票种类:</text>
|
||
<el-select v-model="form1.data.invoiceType" placeholder="发票种类" style="width: 100%">
|
||
<el-option
|
||
v-for="item in ['专用发票', '普通发票']"
|
||
:key="item"
|
||
:label="item"
|
||
:value="item">
|
||
</el-option>
|
||
</el-select>
|
||
</view>
|
||
</view>
|
||
<view class="mb-20 flex justify-start items-center">
|
||
<view class="flex-1 flex justify-start items-center">
|
||
<text style="width: 30%">税率:</text>
|
||
<el-select v-model="form1.data.taxRate" placeholder="税率" style="width: 100%">
|
||
<el-option
|
||
v-for="item in ['13%', '9%', '6%', '4%', '3%', '1%']"
|
||
:key="item"
|
||
:label="item"
|
||
:value="item">
|
||
</el-option>
|
||
</el-select>
|
||
</view>
|
||
<view class="ml-20 flex justify-start items-center flex-1 ml-20">
|
||
<text style="width: 30%">手动填写税票要求:</text>
|
||
<el-input v-model="form1.data.invoiceOther" placeholder="如:一般纳税人 专用发票 税率13%"
|
||
size="small"/>
|
||
</view>
|
||
</view>
|
||
<!-- <view class="p-30">-->
|
||
<!-- <view class="mb-20">-->
|
||
<!-- <el-radio-group v-model="form1.data.invoice">-->
|
||
<!-- <el-radio :label="true">含税</el-radio>-->
|
||
<!-- <el-radio :label="false">不含税</el-radio>-->
|
||
<!-- </el-radio-group>-->
|
||
<!-- </view>-->
|
||
<!-- <template v-if="form1.data.invoice">-->
|
||
<!-- <view class="mb-20 flex justify-start items-center">-->
|
||
<!-- <text>开票时间:</text>-->
|
||
<!-- <el-radio-group v-model="form1.data.writeInvoiceTime">-->
|
||
<!-- <el-radio v-for="(item, index) in WRITE_INVOICE_TIME" :key="index" :label="index">-->
|
||
<!-- {{ item }}-->
|
||
<!-- </el-radio>-->
|
||
<!-- </el-radio-group>-->
|
||
<!-- </view>-->
|
||
<!-- <view class="mb-20 flex justify-start items-center">-->
|
||
<!-- <text>发票种类:</text>-->
|
||
<!-- <el-radio-group v-model="form1.data.invoiceType">-->
|
||
<!-- <el-radio v-for="(item, index) in INVOICE_TYPE" :key="index" :label="index">{{-->
|
||
<!-- item-->
|
||
<!-- }}-->
|
||
<!-- </el-radio>-->
|
||
<!-- </el-radio-group>-->
|
||
<!-- <view class="ml-20 flex justify-start items-center">-->
|
||
<!-- <text class="label-width">其他要求:</text>-->
|
||
<!-- <el-input v-model="form1.data.invoiceOther" placeholder="请输入" size="small"/>-->
|
||
<!-- </view>-->
|
||
<!-- </view>-->
|
||
<!-- </template>-->
|
||
<!-- </view>-->
|
||
|
||
<view class="form-title-wrap">
|
||
<view class="goods-info-title">
|
||
<view class="form-title">
|
||
运输要求
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="p-30">
|
||
<view class="mb-20 flex justify-start items-center">
|
||
<text>随货资料:</text>
|
||
<el-checkbox-group v-model="form1.data.transportDocuments">
|
||
<el-checkbox label="合格证"/>
|
||
<el-checkbox label="检测报告"/>
|
||
<el-checkbox label="销售清单"/>
|
||
<el-checkbox label="磅重"/>
|
||
</el-checkbox-group>
|
||
<view style="margin-left: 30px">
|
||
<el-checkbox label="全选" @change="changeDocumentAll"/>
|
||
</view>
|
||
</view>
|
||
<view class="mb-20 flex justify-start items-center">
|
||
<text class="label-width">其他要求:</text>
|
||
<el-input v-model="form1.data.otherTransportDocuments" placeholder="请输入"/>
|
||
</view>
|
||
<view class="mb-20 flex justify-start items-center">
|
||
<text>运输限制:</text>
|
||
<el-radio-group v-model="form1.data.transportLimit">
|
||
<el-radio :label="false">无</el-radio>
|
||
<el-radio :label="true">有</el-radio>
|
||
</el-radio-group>
|
||
<view class="ml-20 flex justify-start items-center" v-if="form1.data.transportLimit">
|
||
<el-input v-model="form1.data.otherTransportRequest" placeholder="请输入运输限制说明"
|
||
style="width: 400px"/>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
<view class="form-title-wrap">
|
||
<view class="goods-info-title">
|
||
<view class="form-title">
|
||
交易模式
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="p-30">
|
||
<view class="mb-20 flex justify-start items-center">
|
||
<text>交易模式:</text>
|
||
<el-radio-group v-model="form1.data.tradeMethod">
|
||
<el-radio :label="1">金久信公证</el-radio>
|
||
<el-radio :label="0">自主交易</el-radio>
|
||
</el-radio-group>
|
||
</view>
|
||
</view>
|
||
|
||
<view class="form-title-wrap">
|
||
<view class="goods-info-title">
|
||
<view class="form-title">
|
||
交易说明
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="p-30">
|
||
<view class="mb-20 flex justify-start items-center">
|
||
<text>付款方式:</text>
|
||
<el-radio v-model="form1.data.payMethod" :label="0" @change="changePayMethod(0)">预付</el-radio>
|
||
<view class="flex justify-start items-center">
|
||
<el-input v-model="form1.data.advancePayRate" :disabled="form1.data.payMethod !== 0"
|
||
class="advance-pay-rate"/>
|
||
<text>%加工验收合格后付全款</text>
|
||
</view>
|
||
<view class="mx-20">
|
||
<el-radio v-model="form1.data.payMethod" :label="1" @change="changePayMethod(1)">加工验收合格后付全款
|
||
</el-radio>
|
||
</view>
|
||
<!-- <el-radio v-model="form1.data.payMethod" :label="2" @change="changePayMethod(2)">加工验收合格后</el-radio>-->
|
||
<view class="mx-20 flex justify-start items-center">
|
||
<el-radio v-model="form1.data.payMethod" :label="3" @change="changePayMethod(3)">加工验收合格后</el-radio>
|
||
<el-input v-model="form1.data.reputationPayDay" :disabled="form1.data.payMethod !== 3"
|
||
class="advance-pay-rate">
|
||
</el-input>
|
||
<text>天内支付全款</text>
|
||
</view>
|
||
</view>
|
||
<view class="mb-20 flex justify-start items-center">
|
||
<el-radio v-model="form1.data.payMethod" :label="4">其他付款方式</el-radio>
|
||
<el-input v-model="form1.data.otherPayMethod"/>
|
||
</view>
|
||
|
||
<view class="mb-20 flex justify-start items-center">
|
||
<text>报价形式:</text>
|
||
<el-radio v-model="form1.data.offerType" :label="0">整单报价</el-radio>
|
||
<el-radio v-model="form1.data.offerType" :label="1">可分项报价</el-radio>
|
||
</view>
|
||
<view class="mb-20 flex justify-start items-center">
|
||
<text>报价时限:</text>
|
||
<view class="flex justify-start items-center">
|
||
<el-date-picker :picker-options="pickerOptions"
|
||
v-model="form1.data.answerStartTime"
|
||
type="datetime"/>
|
||
<view class="mx-15">~</view>
|
||
<el-date-picker :picker-options="pickerOptions"
|
||
v-model="form1.data.answerEndTime"
|
||
type="datetime"/>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
<view class="form-title-wrap">
|
||
<view class="goods-info-title">
|
||
<view class="form-title">
|
||
交易保证金要求
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="p-30">
|
||
<view class="mb-20 flex justify-start items-center">
|
||
<text style="width: 140px">人民币金额≥</text>
|
||
<el-input-number :min="0" :precision="2" v-model="form1.data.earnestMoney"
|
||
placeholder="请输入交易保证金要求(如无要求则留空)"/>
|
||
</view>
|
||
</view>
|
||
|
||
<view class="form-title-wrap">
|
||
<view class="goods-info-title">
|
||
<view class="form-title">
|
||
简易合同备注和其他补充条款
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="p-30">
|
||
<view class="mb-20 flex justify-start items-center">
|
||
<el-radio v-model="form1.data.signMethod" :label="0">线上签约-标准合同</el-radio>
|
||
<el-radio v-model="form1.data.signMethod" :label="2">线上签约-双方协商合同</el-radio>
|
||
<el-radio v-model="form1.data.signMethod" :label="1" v-if="form1.data.tradeMethod === 0">
|
||
线下签约
|
||
</el-radio>
|
||
</view>
|
||
|
||
<view class="my-25" v-if="form1.data.signMethod === 2">
|
||
<view class="p-30">
|
||
<view class="mb-20 flex justify-start items-center">
|
||
<text style="width: 140px">合同附件:</text>
|
||
<vk-data-upload :on-preview="previewUpload" v-model="form1.data.contractAttachment" accept=".pdf"
|
||
list-type="text"/>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view v-if="form1.data.signMethod === 0">
|
||
<view @click="openDownload" class="pointer my-25 text-main" v-if="form1.data.signMethod === 0">
|
||
点击查看标准合同
|
||
</view>
|
||
<view v-if="form1.data.signMethod === 0" class="mb-15">补充条款</view>
|
||
<view class="flex justify-start items-start border">
|
||
<view class="m-10 sign-method-header">违约责任:</view>
|
||
<view class="border-left m-10 pl-20 flex-1">
|
||
1.
|
||
乙方所交产品品种、型号、规格、质量不符合规定的,如果甲方同意利用,应当按质论价;如果甲方不能利用的,应根据产品的具体情况,由乙方负责包换或包修,并承担修理、调换或退货而支付的实际费用;
|
||
2.乙方不予供货违约责任为甲方的实际损失+违约金,如乙方材料符合订货标准,甲方不能退货和不收货,甲方无条件应按实际本合同订货数量支付100%货款,并支付乙方因此产生的实际费用。带有甲乙双方单位相关收货人和发货人签字的本合同的发货清单事项和内容均视为本合同的补充合同,与本合同有相同的法律效力,双方应共同遵照执行。
|
||
</view>
|
||
</view>
|
||
<view class="flex justify-start items-start border">
|
||
<view class="m-10 sign-method-header">解决纠纷的方法:</view>
|
||
<view class="border-left m-10 pl-20 flex-1">
|
||
1、凡因本合同引起的或与本合同有关的任何争议,均可友好协商或仲裁解决,协商或仲裁不成的,双方协商同意在合同签订地人民法院管辖地起诉,违约一方或对合同争议承担主要责任的一方,应承担对方因仲裁和起诉而产生的全部律师代理费、鉴定(检验)费、诉讼保全费、诉讼保险费、公告费、差旅费、执行费、误工费和获取证据产生费用等其他相关费用。
|
||
2、双方本合同相关权利放弃均应有双方书面作出并加盖公章或授权委托人签字后生效。
|
||
</view>
|
||
</view>
|
||
<view class="flex justify-start items-start border">
|
||
<view class="m-10 sign-method-header">不可抗力:</view>
|
||
<view class="border-left m-10 pl-20 flex-1">
|
||
甲乙双方的任何一方由于不可抗力或突发公共事件的原因不能履行合同时,应及时向对方通报不能履行或不能完全履行的理由,以减轻可能给对方造成的损失,在取得有关机构证明以后,允许延期履行、部分履行或者不履行合同,并根据情况可部分或全部免予承担违约责任。
|
||
</view>
|
||
</view>
|
||
<view class="flex justify-start items-start border">
|
||
<view class="m-10 sign-method-header">其他:</view>
|
||
<view class="border-left m-10 pl-20 flex-1">
|
||
本合同的全部内容由双方平等共同协商一致,共同起草制定,非一方事先拟定,不属于格式条款。本合同自双方签字盖章后生效(包括电子签字、盖章),按本合同内容地址、联系方式寄送的一切文书、函件送达与否,均为视为送达有法律效力,通知途径和本合同内联系方式或地址送达文件双方均予以验证。
|
||
</view>
|
||
</view>
|
||
<view class="flex justify-start items-start border">
|
||
<view class="m-10 sign-method-header">采购方补充条款:</view>
|
||
<view class="border-left m-10 pl-20 flex-1">
|
||
<el-input v-if="form1.data.signMethod === 0" v-model="form1.data.supplementary"
|
||
placeholder="请输入采购方补充条款"/>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="form-title-wrap">
|
||
<view class="goods-info-title">
|
||
<view class="form-title">
|
||
采购商信息
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="p-30">
|
||
<el-row :gutter="10" class="mb-20">
|
||
<el-col :span="12" class="flex justify-start items-center">
|
||
<text style="width: 160px">{{
|
||
userInfo.accountType === 2 ? '公司信息' : '个人信息'
|
||
}}:
|
||
</text>
|
||
<el-input v-model="form1.data.companyName" placeholder=""/>
|
||
</el-col>
|
||
<el-col :span="12" class="flex justify-start items-center">
|
||
<text style="width: 160px">{{
|
||
userInfo.accountType === 2 ? '公司联系方式' : '个人联系方式'
|
||
}}:
|
||
</text>
|
||
<el-input v-model="form1.data.companyMobile"/>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row :gutter="10">
|
||
<el-col :span="12" class="flex justify-start items-center">
|
||
<text style="width: 160px">授权业务咨询人:</text>
|
||
<el-select v-model="form1.data.businessName" placeholder="点击选择业务联系人"
|
||
class="w-100p" @change="selectContact">
|
||
<el-option
|
||
v-for="(item, index) in contactList"
|
||
:key="index"
|
||
:label="item.name"
|
||
:value="item.name">
|
||
</el-option>
|
||
<view slot="empty" class="text-gray pointer p-20">
|
||
<text>无业务联系人,请到</text>
|
||
<text class="text-main mx-15" @click="navTo">个人中心</text>
|
||
<text>添加</text>
|
||
</view>
|
||
</el-select>
|
||
</el-col>
|
||
<el-col :span="12" class="flex justify-start items-center">
|
||
<text style="width: 160px">业务咨询联系方式:</text>
|
||
<el-input v-model="form1.data.businessMobile" type="number" disabled/>
|
||
</el-col>
|
||
</el-row>
|
||
</view>
|
||
|
||
</el-form>
|
||
<view class="form-footer">
|
||
<p class="text-main my-20">如发布错误无法重新编辑,请仔细检查后再提交。</p>
|
||
<!-- <el-button type="" @click="draft" :disabled="disabled">保存草稿</el-button>-->
|
||
<el-button type="primary" @click="submit" :disabled="disabled">提交加工单</el-button>
|
||
</view>
|
||
<!-- <el-divider content-position="left">其他设置</el-divider> -->
|
||
</view>
|
||
<Gap/>
|
||
<common-footer></common-footer>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import Gap from "../../components/gap/gap.vue";
|
||
import {DataFile} from '@icon-park/vue'
|
||
import dayjs from "dayjs";
|
||
import {WRITE_INVOICE_TIME, INVOICE_TYPE} from '@/util'
|
||
import provinces from "@/uni_modules/vk-uview-ui/libs/address/provinces.json";
|
||
import citys from "@/uni_modules/vk-uview-ui/libs/address/citys.json";
|
||
|
||
export default {
|
||
components: {Gap, DataFile},
|
||
data() {
|
||
return {
|
||
addressOptions: [],
|
||
pickerOptions: {
|
||
disabledDate(time) {
|
||
return time.getTime() < Date.now();
|
||
},
|
||
},
|
||
WRITE_INVOICE_TIME,
|
||
INVOICE_TYPE,
|
||
// 表单相关开始-----------------------------------------------------------
|
||
productList: [{}],
|
||
baseAttributes: [],
|
||
addressIndex: [null, null],
|
||
disabled: false,
|
||
commonContractUrl: '',
|
||
form1: {
|
||
// 表单请求数据,此处可以设置默认值
|
||
data: {
|
||
// extraAttributes: {},
|
||
// attributes: {},
|
||
invoice: false,
|
||
salesCode: '',
|
||
title: '',
|
||
num: '',
|
||
remark: '',
|
||
transportDocuments: [],
|
||
writeInvoiceTime: 0,
|
||
invoiceType: '',
|
||
invoiceOther: '',
|
||
taxType: '',
|
||
taxRate: '',
|
||
otherTransportDocuments: '',
|
||
transportLimit: false,
|
||
otherTransportRequest: '',
|
||
tradeMethod: 1,
|
||
payMethod: 0,
|
||
advancePayRate: null,
|
||
reputationPayDay: null,
|
||
otherPayMethod: '',
|
||
offerType: 0,
|
||
answerStartTime: '',
|
||
answerEndTime: '',
|
||
earnestMoney: '',
|
||
signMethod: 0,
|
||
attachment: '',
|
||
productList: [],
|
||
multiFiles: [],
|
||
files: null,
|
||
contractAttachment: [],
|
||
supplementary: '',
|
||
companyName: '',
|
||
companyMobile: '',
|
||
businessName: '',
|
||
businessMobile: '',
|
||
addressDetail: '',
|
||
detail: '',
|
||
},
|
||
},
|
||
// 表单相关结束-----------------------------------------------------------
|
||
hasRequire: false,
|
||
contactList: [],
|
||
userInfo: null
|
||
};
|
||
},
|
||
onLoad() {
|
||
this.addressOptions = provinces.map(item => {
|
||
item.children = [];
|
||
return item
|
||
})
|
||
this.addressOptions.forEach((province, index) => {
|
||
citys[index].forEach(city => {
|
||
this.addressOptions[index].children.push(city)
|
||
})
|
||
})
|
||
this.getProductList()
|
||
this.getCommonContractUrl()
|
||
this.getContactList()
|
||
},
|
||
onShow() {
|
||
this.userInfo = vk.getVuex('$user.userInfo')
|
||
this.form1.data.companyName = this.userInfo.accountType === 2 ? this.userInfo.company?.companyName : this.userInfo.person?.personName
|
||
this.form1.data.companyMobile = this.userInfo.accountType === 2 ? this.userInfo.company?.mobile : this.userInfo.person?.mobile
|
||
},
|
||
methods: {
|
||
getProductList() {
|
||
this.productList = []
|
||
vk.callFunction({
|
||
url: 'client/process/category/pub/getList',
|
||
data: {
|
||
whereJson: {
|
||
level: 1
|
||
}
|
||
},
|
||
}).then(({data}) => {
|
||
data.forEach(item => {
|
||
this.productList.push(item)
|
||
})
|
||
})
|
||
},
|
||
onFormSuccess() {
|
||
vk.navigateTo('/pages/process/list');
|
||
},
|
||
// 提交并发布
|
||
submit() {
|
||
this.form1.data.isShow = 1
|
||
this.submitAll()
|
||
},
|
||
// 提交并保存草稿
|
||
draft() {
|
||
this.form1.data.isShow = 0
|
||
this.submitAll()
|
||
},
|
||
async submitAll() {
|
||
if (!this.form1.data.title) return this.$message({message: '请选择加工商品', type: 'error'})
|
||
if (!this.form1.data.num) return this.$message({message: '请输入加工量', type: 'error'})
|
||
if (!this.form1.data.addressRegion || !this.form1.data.addressDetail) return this.$message({
|
||
message: '请选择地址',
|
||
type: 'error'
|
||
})
|
||
if (!this.form1.data.answerEndTime || !this.form1.data.answerStartTime) return this.$message({
|
||
message: '请选择报价时限',
|
||
type: 'error'
|
||
})
|
||
if (dayjs(this.form1.data.answerEndTime).isBefore(this.form1.data.answerStartTime)) return this.$message({
|
||
message: '报价结束时限不能早于开始时间',
|
||
type: 'error'
|
||
})
|
||
if (this.form1.data.payMethod === 0 && !this.form1.data.advancePayRate) return this.$message({
|
||
message: '请填写预付比例',
|
||
type: 'error'
|
||
})
|
||
if (this.form1.data.payMethod === 3 && !this.form1.data.reputationPayDay) return this.$message({
|
||
message: '请填写回款日期',
|
||
type: 'error'
|
||
})
|
||
// if (this.addressIndex[1])
|
||
// let city, province
|
||
// this.addressOptions.forEach((provinceItem, index) => {
|
||
// provinceItem.children.forEach(cityItem => {
|
||
// if (cityItem.code === this.addressIndex[1]) {
|
||
// city = cityItem
|
||
// province = {code: provinceItem.code, name: provinceItem.name}
|
||
// }
|
||
// })
|
||
// })
|
||
// this.$refs.form1.submitForm()
|
||
this.disabled = true
|
||
vk.callFunction({
|
||
url: 'client/process/sheet/kh/add',
|
||
data: {
|
||
...this.form1.data, ...{
|
||
orderNo: dayjs().format('YYYYMMDDHHmm') + Math.ceil((Math.random() * 1000)),
|
||
}
|
||
}
|
||
}).then(() => {
|
||
this.disabled = false
|
||
this.$message({
|
||
message: "您的信息已经提交,等待管理员审核,请您耐心等待!",
|
||
type: 'success'
|
||
})
|
||
setTimeout(() => {
|
||
vk.redirectTo({url: '/pages/process/list'});
|
||
}, 1500)
|
||
})
|
||
},
|
||
upload(file) {
|
||
// vk.uploadFile({
|
||
// title: '上传中',
|
||
// file,
|
||
// success: ({url}) => {
|
||
// this.form1.data.attachment = url
|
||
// }
|
||
// })
|
||
console.log(file)
|
||
},
|
||
selectFile(file) {
|
||
// vk.uploadFile({
|
||
// title: '上传中',
|
||
// file,
|
||
// success: ({url}) => {
|
||
// this.form1.data.attachment = url
|
||
// }
|
||
// })
|
||
// this.$refs.uploader.clearFiles();
|
||
console.log(file)
|
||
},
|
||
selectGoods(item) {
|
||
const index = this.form1.data.productList.indexOf(item._id)
|
||
if (this.form1.data.productList.length === 5 && index === -1) return this.$message({
|
||
message: "最多选择5个商品",
|
||
type: 'error'
|
||
})
|
||
if (index === -1) this.form1.data.productList.push(item._id)
|
||
else this.form1.data.productList.splice(index, 1)
|
||
const list = []
|
||
this.productList.forEach(item => {
|
||
if (this.form1.data.productList.includes(item._id)) list.push(item.name)
|
||
})
|
||
this.form1.data.title = list.join()
|
||
},
|
||
async getCommonContractUrl() {
|
||
const res = await vk.callFunction({
|
||
url: 'client/dict/pub/getDetail',
|
||
data: {
|
||
id: '657d36befe975f63af1f24e7'
|
||
},
|
||
})
|
||
this.commonContractUrl = res.content
|
||
},
|
||
openDownload() {
|
||
window.open(this.commonContractUrl)
|
||
},
|
||
async getContactList() {
|
||
const {rows} = await vk.callFunction({
|
||
url: 'client/businessContact/kh/getList',
|
||
})
|
||
this.contactList = rows
|
||
},
|
||
navTo() {
|
||
vk.navigateTo({url: '/pages/user/user?menu=business-contact'})
|
||
},
|
||
selectContact(name) {
|
||
const contact = this.contactList.find(item => item.name === name)
|
||
this.form1.data.businessMobile = contact.phone
|
||
},
|
||
changePayMethod(payMethod) {
|
||
if ([1, 2].includes(payMethod)) {
|
||
this.form1.data.advancePayRate = null
|
||
this.form1.data.reputationPayDay = null
|
||
}
|
||
},
|
||
changeDocumentAll() {
|
||
if (this.form1.data.transportDocuments.length !== 4) {
|
||
this.form1.data.transportDocuments = ['合格证', '检测报告', '销售清单', '磅重']
|
||
} else this.form1.data.transportDocuments = []
|
||
},
|
||
previewUpload({url}) {
|
||
window.open(url)
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
@import "@/common/css/app.scss";
|
||
|
||
.form-view {
|
||
width: 1200px;
|
||
margin: 0 auto;
|
||
background-color: #FFFFFF;
|
||
padding: 20rpx;
|
||
border-radius: 20px;
|
||
}
|
||
|
||
.m-20 {
|
||
margin: 20px;
|
||
}
|
||
|
||
.title-main {
|
||
font-size: 18px;
|
||
font-weight: bold;
|
||
text-align: center;
|
||
}
|
||
|
||
.title-sub {
|
||
font-size: 14px;
|
||
text-align: center;
|
||
}
|
||
|
||
.btn-add-outer {
|
||
padding-left: 140px;
|
||
margin: 0 0 20px 0;
|
||
}
|
||
|
||
.form-footer {
|
||
//height: 40px;
|
||
//line-height: 40px;
|
||
background: #fff;
|
||
padding-top: 0;
|
||
text-align: center;
|
||
display: block;
|
||
}
|
||
|
||
|
||
.form-title-wrap {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
|
||
.goods-info-title {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: flex-start;
|
||
}
|
||
|
||
.form-title {
|
||
padding-left: 10px;
|
||
color: $--color-primary;
|
||
font-size: 18px;
|
||
line-height: 18px;
|
||
border-left: 4px solid $--color-primary;
|
||
}
|
||
|
||
.enquiry-no {
|
||
margin-left: 10px;
|
||
font-size: 14px;
|
||
}
|
||
}
|
||
|
||
.sales-code {
|
||
text {
|
||
width: 400rpx;
|
||
}
|
||
}
|
||
|
||
|
||
.remark-upload {
|
||
position: absolute;
|
||
left: 15px;
|
||
bottom: 15px;
|
||
border: 1px solid #ddd;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
padding: 5px;
|
||
|
||
i {
|
||
color: #ddd;
|
||
font-size: 18px;
|
||
}
|
||
}
|
||
|
||
.attachment-upload {
|
||
border: 1px solid #ddd;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
padding: 5px;
|
||
width: 50px;
|
||
height: 50px;
|
||
cursor: pointer;
|
||
|
||
i {
|
||
color: #ddd;
|
||
font-size: 18px;
|
||
}
|
||
}
|
||
|
||
|
||
.label-width {
|
||
width: 100px;
|
||
}
|
||
|
||
.advance-pay-rate {
|
||
width: 100px;
|
||
}
|
||
|
||
.sign-method-header {
|
||
width: 120px;
|
||
}
|
||
|
||
.product-item {
|
||
font-size: 35rpx;
|
||
margin: 10rpx;
|
||
padding: 20rpx;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.product-item:hover {
|
||
background-color: #f1c7c7;
|
||
color: #a92924
|
||
}
|
||
|
||
|
||
.product-item-active {
|
||
background-color: #f1c7c7;
|
||
color: #a92924
|
||
}
|
||
|
||
|
||
</style> |