1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288 |
- <template>
- <el-dialog
- v-loading="loading"
- :title="'竞价单选定商品下单'"
- :center="true"
- align="left"
- top="5vh"
- width="1040px"
- :close-on-click-modal="false"
- :visible.sync="showModelThis"
- element-loading-text="拼命加载中"
- element-loading-spinner="el-icon-loading"
- element-loading-background="rgba(0, 0, 0, 0.8)"
- append-to-body
- @close="showModelThis = false"
- >
- <el-card style="margin-top: -20px">
- <el-row>
- <el-col :span="24">
- <show-data-table
- v-if="newTime !== '' && sitem"
- style="margin: 0; padding: 0"
- :new-time="newTime"
- :sitem="sitem"
- border
- :columns="ShowDataTableColumns"
- >
- <template slot="good_name">
- <span>{{ sitem.good_name }}</span>
- <span v-for="(si, sii) in sitem.specinfo" :key="si.specid + sii">
- <span v-if="sii !== 0">--</span><span>{{ si.spec_name }}[{{ si.spec_value_name }}]</span></span>
- </template>
- <template slot="is_noble">
- <span v-if="sitem.is_noble">
- {{ sitem.noble_weight }}g--{{ sitem.metal_name }}--{{
- sitem.is_diff === "1" ? "有" : "无"
- }}工差--{{ sitem.config }}--{{ sitem.other_config }}</span>
- <span v-else>非贵金属商品</span>
- </template>
- <template slot="in_num">
- <span>{{ sitem.in_num }}{{ sitem.unit }}</span>
- </template>
- </show-data-table>
- </el-col>
- <el-col :span="24" style="padding: 18px 0 0 0">
- <el-form
- ref="ruleForm"
- :model="ruleForm"
- status-icon
- :rules="rulesThis"
- :size="'mini'"
- label-width="55px"
- class="demo-ruleForm"
- >
- <el-row>
- <el-col :span="5">
- <el-form-item label="数量" prop="good_num">
- <!--:min="sitem.in_num"-->
- <digital-input
- :values="ruleForm.good_num"
- :placeholder="'数量'"
- :min="1"
- :max="100000000000"
- :position="'right'"
- :precision="0"
- :size="'mini'"
- :controls="false"
- :disabled="false"
- :append="sitem.unit"
- @reschange="num_change($event, 'good_num')"
- />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="单价" prop="sale_price">
- <digital-input
- :values="ruleForm.sale_price"
- :placeholder="'商品单价'"
- :min="sitem.sale_price"
- :max="100000000000"
- :position="'right'"
- :precision="2"
- :size="'mini'"
- :controls="false"
- :disabled="false"
- :append="'元'"
- @reschange="num_change($event, 'sale_price')"
- />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="总金额" prop="good_num" label-width="70px">
- <el-input
- v-model="total_price"
- placeholder="总金额"
- disabled
- maxlength="500"
- />
- </el-form-item>
- </el-col>
- <el-col :span="5">
- <el-form-item label="下单方式" prop="sendtype" label-width="90px">
- <el-select
- v-model="ruleForm.sendtype"
- placeholder="下单方式"
- style="width: 100%"
- >
- <el-option
- v-for="item in options"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- />
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="2" style="text-align: right">
- <el-button
- :size="'mini'"
- type="primary"
- :disabled="loading"
- @click="submitForm"
- >保 存
- </el-button>
- </el-col>
- <el-col :span="11">
- <el-form-item label="业务公司" prop="companyNo" label-width="85px">
- <search-work-company
- :value="ruleForm.companyNo"
- :placeholder="'业务公司'"
- :disabled="false"
- :size="'mini'"
- :is-detail="true"
- @searchChange="company_idsearchChange"
- />
- </el-form-item>
- </el-col>
- <el-col :span="13">
- <el-form-item label="订单备注" prop="remark" label-width="85px">
- <el-input
- v-model="ruleForm.remark"
- maxlength="500"
- placeholder="订单备注"
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-row>
- <el-col
- :span="12"
- ><el-form-item label="凭证类型" prop="proof_type" label-width="85px">
- <el-select
- v-model="ruleForm.proof_type"
- placeholder="凭证类型"
- style="width: 100%"
- @change="set_proof_url()"
- >
- <el-option
- v-for="item in proof_options"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- />
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="到货时间" prop="arrtime" label-width="85px">
- <el-date-picker
- v-model="ruleForm.arrtime"
- type="date"
- style="width: 100%"
- :disabled="false"
- value-format="yyyy-MM-dd"
- :picker-options="pickerOptions"
- placeholder="要求到货时间"
- @change="mdDate"
- />
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-form-item label="凭证文件" prop="proof_url" label-width="85px">
- <ul class="shangchuan-ul">
- <li v-if="ruleForm.proof_type + '' === '1'" class="shiping">
- <div v-if="video_url" class="clearfix">
- <el-popover placement="top" width="300" trigger="hover">
- <video width="275" controls class="fl">
- <source :src="video_url" type="video/mp4">
- <source :src="video_url" type="video/avi">
- 您的浏览器不支持Video标签。
- </video>
- <i
- slot="reference"
- class="el-icon-video-camera-solid hover"
- style="font-size: 18px"
- />
- </el-popover>
- <el-link
- :underline="false"
- type="warning"
- style="margin: 0 0 0 16px"
- @click="deleteUrl('1')"
- >删除</el-link>
- </div>
- <div v-else class="activity-upload">
- <div class="btnupload" style="position: relative">
- <i class="el-icon-plus avatar-uploader-icon" />
- <video-upload
- class="Upload"
- :disabled="type === 'view' || type === 'editCoin'"
- :accept="'.mp4,.avi'"
- :multiple="false"
- :uploadcondition="beforeVideoUpload"
- @UploadErrorEvent="UploadVideoEventproof_url"
- @UploadSuccessEvent="UploadSuccessVideoproof_url"
- />
- </div>
- <div class="txt-tips fl">
- <p>建议大小:小于10MB</p>
- <p>文件格式:.mp4,.avi</p>
- </div>
- </div>
- </li>
- <li v-if="ruleForm.proof_type + '' === '2'" class="tupian">
- <div v-if="img_url" class="clearfix">
- <img
- style="width: 50px; height: 50px"
- :src="img_url"
- class="avatar fl"
- >
- <el-link
- :underline="false"
- type="warning"
- style="margin: 0 0 0 16px"
- @click="deleteUrl('2')"
- >删除</el-link>
- </div>
- <div v-else class="activity-upload">
- <div class="btnupload" style="position: relative">
- <i class="el-icon-plus avatar-uploader-icon" />
- <file-upload
- class="Upload"
- :disabled="type === 'view' || type === 'editCoin'"
- :accept="'.jpg,.png,.jpeg'"
- :multiple="false"
- :uploadcondition="beforeAvatarUpload"
- @UploadErrorEvent="UploadErrorEventproof_url"
- @UploadSuccessEvent="UploadSuccessEventproof_url"
- />
- </div>
- <div class="txt-tips fl">
- <p>建议大小:小于1MB</p>
- <p>文件格式:.jpg,.png,.jpeg</p>
- </div>
- </div>
- </li>
- <li v-if="ruleForm.proof_type + '' === '3'" class="qita">
- <div v-if="other_url" class="clearfix">
- <a :href="other_url" download="凭证文件">点击下载</a>
- <el-link
- :underline="false"
- type="warning"
- style="margin: 0 0 0 16px"
- @click="deleteUrl('3')"
- >删除</el-link>
- </div>
- <div v-else class="activity-upload">
- <div class="btnupload" style="position: relative">
- <i class="el-icon-plus avatar-uploader-icon" />
- <file-upload-pdf
- class="Upload"
- :accept="'.xlsx,.xls,.pdf,.zip,.rar,.7z'"
- :multiple="false"
- :uploadcondition="beforeOtherUpload"
- @UploadErrorEvent="UploadErrorOtherproof_url"
- @UploadSuccessEvent="UploadSuccessOtherproof_url"
- />
- </div>
- <div class="txt-tips fl">
- <p>建议大小:小于5MB</p>
- <p>文件格式:.xlsx,.xls,.pdf,.zip,.rar,.7z</p>
- </div>
- </div>
- </li>
- </ul>
- </el-form-item>
- </el-col>
- </el-row>
- </el-col>
- <el-col :span="12">
- <el-form-item label="其他单号" prop="workNo" label-width="115px">
- <el-input
- v-model="ruleForm.workNo"
- maxlength="2000"
- type="textarea"
- :rows="2"
- show-word-limit
- placeholder="如: 业管单号"
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item
- label="平台订单号"
- prop="platform_order"
- label-width="115px"
- >
- <el-input
- v-model="ruleForm.platform_order"
- maxlength="2000"
- type="textarea"
- :rows="2"
- show-word-limit
- placeholder="如: PO号"
- />
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- </el-col>
- <el-col v-if="ruleForm.sendtype + '' === '1'" :span="24">
- <el-form ref="addrForm" :model="addrForm" :size="'mini'">
- <el-table
- :data="addrForm.order_addr"
- border
- :size="'mini'"
- style="width: 100%"
- max-height="300px"
- row-key="key"
- >
- <el-table-column type="index" width="50" show-overflow-tooltip />
- <el-table-column
- prop="receipt_quantity"
- label="收货总数"
- min-width="125"
- show-overflow-tooltip
- >
- <template slot-scope="scope">
- <el-form-item
- v-if="scope.row.edit"
- :prop="'order_addr.' + scope.$index + '.' + 'receipt_quantity'"
- :rules="addrRules.receipt_quantity"
- :size="'mini'"
- :style="{ marginBottom: scope.row.edit ? '13px' : '0' }"
- >
- <el-input
- v-model="scope.row.receipt_quantity"
- placeholder="收货总数"
- :disabled="!scope.row.edit"
- maxlength="10"
- />
- </el-form-item>
- <span v-if="!scope.row.edit">{{ scope.row.receipt_quantity }}</span>
- </template>
- </el-table-column>
- <el-table-column
- prop="contactor"
- label="收件联系人"
- min-width="110"
- show-overflow-tooltip
- >
- <template slot-scope="scope">
- <el-form-item
- v-if="scope.row.edit"
- :prop="'order_addr.' + scope.$index + '.' + 'contactor'"
- :rules="addrRules.contactor"
- :size="'mini'"
- :style="{ marginBottom: scope.row.edit ? '13px' : '0' }"
- >
- <el-input
- v-model="scope.row.contactor"
- placeholder="收件联系人"
- maxlength="20"
- :disabled="!scope.row.edit"
- />
- </el-form-item>
- <span v-if="!scope.row.edit">{{ scope.row.contactor }}</span>
- </template>
- </el-table-column>
- <el-table-column
- prop="mobile"
- label="收货联系电话"
- min-width="130"
- show-overflow-tooltip
- >
- <template slot-scope="scope">
- <el-form-item
- v-if="scope.row.edit"
- :prop="'order_addr.' + scope.$index + '.' + 'mobile'"
- :rules="addrRules.mobile"
- :size="'mini'"
- :style="{ marginBottom: scope.row.edit ? '13px' : '0' }"
- >
- <el-input
- v-model="scope.row.mobile"
- placeholder="收货联系电话"
- :disabled="!scope.row.edit"
- maxlength="11"
- />
- </el-form-item>
- <span v-if="!scope.row.edit">{{ scope.row.mobile }}</span>
- </template>
- </el-table-column>
- <el-table-column
- prop="addr_code"
- label="收货省市区"
- min-width="230"
- show-overflow-tooltip
- >
- <template slot-scope="scope">
- <el-form-item
- v-if="scope.row.edit"
- :prop="'order_addr.' + scope.$index + '.' + 'addr_code'"
- :rules="addrRules.addr_code"
- :size="'mini'"
- :style="{ marginBottom: scope.row.edit ? '13px' : '0' }"
- >
- <select-area
- :value="scope.row.addr_code"
- :disabled="!scope.row.edit"
- placeholder="收货省市区"
- :size="'mini'"
- @selectChange="select_area_change($event, scope.$index)"
- />
- </el-form-item>
- <span v-if="!scope.row.edit">{{ scope.row.addr_code_name }}</span>
- </template>
- </el-table-column>
- <el-table-column
- prop="addr"
- label="详细地址"
- min-width="170"
- show-overflow-tooltip
- >
- <template slot-scope="scope">
- <el-form-item
- v-if="scope.row.edit"
- :prop="'order_addr.' + scope.$index + '.' + 'addr'"
- :rules="addrRules.addr"
- :size="'mini'"
- :style="{ marginBottom: scope.row.edit ? '13px' : '0' }"
- >
- <el-input
- v-model="scope.row.addr"
- placeholder="详细地址"
- :disabled="!scope.row.edit"
- maxlength="100"
- />
- </el-form-item>
- <span v-if="!scope.row.edit">{{ scope.row.addr }}</span>
- </template>
- </el-table-column>
- <el-table-column fixed="right" width="94" show-overflow-tooltip>
- <template slot="header" slot-scope="scope">
- <el-tooltip
- class="fr"
- style="margin: 3px 0 0 8px"
- effect="dark"
- content="手动添加地址"
- placement="top"
- >
- <i
- class="el-icon-circle-plus-outline tb-icon"
- style="color: #6954f0"
- @click="openHouseModal(-1)"
- />
- </el-tooltip>
- <el-tooltip
- class="fr"
- style="margin: 3px 0 0 8px"
- effect="dark"
- content="导入收货地址"
- placement="top"
- >
- <i
- class="el-icon-upload2 tb-icon"
- style="color: #6954f0"
- @click="addrmodel = true"
- />
- </el-tooltip>
- <el-tooltip
- class="fr"
- style="margin: 3px 0 0 0"
- effect="dark"
- content="下载收货地址模板"
- placement="top"
- >
- <a class="downloadAddr" href="./static/收货地址模板.xlsx">
- <i
- class="el-icon-download tb-icon"
- style="color: #6954f0; margin: 0"
- />
- </a>
- </el-tooltip>
- </template>
- <template slot-scope="scope">
- <el-tooltip
- v-if="!scope.row.edit"
- effect="dark"
- content="编辑"
- placement="top"
- >
- <i
- class="el-icon-edit tb-icon"
- @click="openHouseModal(scope.$index)"
- />
- </el-tooltip>
- <el-tooltip
- v-if="scope.row.edit"
- effect="dark"
- content="保存"
- placement="top"
- >
- <i
- class="el-icon-circle-check tb-icon"
- @click="checkRow(scope.$index)"
- />
- </el-tooltip>
- <el-tooltip effect="dark" content="删除" placement="top">
- <i
- class="el-icon-delete tb-icon"
- @click="deleteRow(scope.$index, addrForm.order_addr)"
- />
- </el-tooltip>
- </template>
- </el-table-column>
- </el-table>
- </el-form>
- </el-col>
- <el-col :span="24">
- <in-addr-model
- :show-model="addrmodel"
- @cancel="addrmodel = false"
- @refresh="addrRefresh"
- />
- </el-col>
- </el-row>
- </el-card>
- </el-dialog>
- </template>
- <script>
- import resToken from '@/mixins/resToken'
- import asyncRequest from '@/apis/service/sellOut/zixunOrder'
- import searchStockGoodModal from '@/components/search-stock-good-modal'
- import {
- isnumber,
- isMobile,
- isChinese,
- isEmoticon,
- isSpecialSymbol,
- hasSpace,
- isAddr
- } from '@/utils/validate'
- import inAddrModel from '@/components/in-addr-model'
- import { ShowDataTableColumns } from './ShowDataTableColumns'
- import { replaceTextWrapAndSpace } from '@/utils'
- export default {
- name: 'BuyGoodModal',
- components: { searchStockGoodModal, inAddrModel },
- mixins: [resToken],
- props: ['showModel', 'sitem'],
- data() {
- const validatemobile = (rule, value, callback) => {
- if (value === '') {
- callback(new Error('手机号不能为空!'))
- } else {
- if (!isMobile(value)) {
- callback(new Error('手机号格式不正确!'))
- } else {
- callback()
- }
- }
- }
- const validateWeight = (rule, value, callback) => {
- if (value === '') {
- callback(new Error('收货总数不能为空!'))
- } else {
- if (!isnumber(value)) {
- callback(new Error('收货总数仅支持整数!'))
- } else {
- callback()
- }
- }
- }
- const validate_num_0 = (rule, value, callback) => {
- const { required } = rule
- if (required && value === '') {
- callback(new Error('不能为空!'))
- } else if (
- required &&
- (value === '0' ||
- value === '0.' ||
- value === '0.0' ||
- value === '0.00' ||
- value === '0.000')
- ) {
- callback(new Error('不能为零!'))
- } else {
- callback()
- }
- }
- const validatecontactor = (rule, value, callback) => {
- if (value === '') {
- callback(new Error('联系人不能为空!'))
- } else {
- if (value.length < 2 || value.length > 10) {
- callback(new Error('联系人规则为2~10位汉字!'))
- } else {
- if (!isChinese(value)) {
- callback(new Error('联系人规则为2~10位汉字!'))
- } else if (isEmoticon(value)) {
- callback(new Error('联系人规则为2~10位汉字!'))
- } else {
- callback()
- }
- }
- }
- }
- const validateAddr = (rule, value, callback) => {
- if (value === '') {
- callback(new Error('详细地址不能为空!'))
- } else {
- if (hasSpace(value)) {
- callback(new Error('不能出现/回车/换行符!'))
- } else if (isSpecialSymbol(value)) {
- callback(new Error('不能使用英文特殊字符!'))
- } else if (isAddr(value)) {
- callback()
- } else {
- callback(new Error('详细地址填写不规范!'))
- }
- }
- }
- return {
- loading: false,
- total_price: '0',
- addrmodel: false,
- showModelThis: this.showModel,
- showGoodsModel: false,
- ShowDataTableColumns: ShowDataTableColumns,
- video_url: '',
- img_url: '',
- other_url: '',
- proof_options: [
- {
- value: '1',
- label: '视频'
- },
- {
- value: '2',
- label: '图片'
- },
- {
- value: '3',
- label: '其他'
- }
- ],
- pickerOptions: {
- disabledDate: (time) => {
- return time.getTime() < new Date(this.sitem.in_arrival_time).getTime()
- }
- },
- options: [
- {
- value: '1',
- label: '有地址下单'
- },
- {
- value: '2',
- label: '无地址下单'
- }
- ],
- stock_code: '',
- cat_id: '',
- ruleForm: {
- bidNo: '', // 竞价单反馈编号
- good_num: '', // 商品数量
- sale_price: '',
- sendtype: '1', // 发货方式
- arrtime: '', // 到货时间
- remark: '', // 订单备注
- platform_order: '', // 平台订单号
- workNo: '', // 其他单号
- companyNo: ''
- },
- rulesThis: this.rules,
- rules: {
- good_num: [
- {
- required: true,
- validator: validate_num_0,
- trigger: 'blur'
- }
- ],
- sale_price: [
- {
- required: true,
- validator: validate_num_0,
- trigger: 'blur'
- }
- ],
- companyNo: [
- {
- required: true,
- message: '请选择业务公司',
- trigger: 'change'
- }
- ],
- sendtype: [
- {
- required: true,
- message: '请选择发货方式',
- trigger: 'change'
- }
- ],
- remark: [
- {
- required: true,
- message: '输入订单备注',
- trigger: 'blur'
- }
- ],
- arrtime: [
- {
- required: true,
- message: '要求到货时间',
- trigger: 'change'
- }
- ],
- proof_type: [
- {
- required: false,
- message: '请选择凭证类型',
- trigger: 'change'
- }
- ],
- proof_url: [
- {
- required: false,
- message: '请上传凭证文件',
- trigger: 'blur,change'
- }
- ]
- },
- addrForm: {
- order_addr: [] // 收货地址
- },
- addrRules: {
- receipt_quantity: [
- {
- required: true,
- validator: validateWeight,
- trigger: 'blur'
- }
- ],
- contactor: [
- {
- required: true,
- trigger: 'blur',
- validator: validatecontactor
- }
- ],
- mobile: [
- {
- required: true,
- validator: validatemobile,
- trigger: 'blur'
- }
- ],
- addr_code: [
- {
- type: 'array',
- required: false,
- trigger: 'change'
- }
- ],
- addr: [
- {
- required: true,
- validator: validateAddr,
- trigger: 'blur'
- }
- ]
- },
- id: ''
- }
- },
- watch: {
- showModel: function(val) {
- this.showModelThis = val
- if (val) {
- // this.rulesThis = this.rules;
- this.initForm()
- }
- },
- showModelThis(val) {
- if (!val) {
- this.$emit('cancel')
- }
- }
- },
- created() {
- // this.this.ruleForm.arrtime = this.sitem.in_arrival_time.substring(0, 10);
- },
- methods: {
- // 修改日期校验
- mdDate() {
- // 用户传递的到货时间不能大于要求到货的时间 对要求到货时间进行字符截取10位抹除时分秒
- if (
- Date.parse(this.ruleForm.arrtime) <
- Date.parse(this.sitem.in_arrival_time.substring(0, 10))
- ) {
- this.$message.warning('到货时间不能小于要求到货日期')
- this.ruleForm.arrtime = ''
- }
- },
- // 销售方公司选择
- company_idsearchChange(e) {
- const { code } = e
- this.ruleForm.companyNo = code || ''
- this.$refs.ruleForm.validateField('companyNo')
- },
- closeModel() {
- console.log('closeModel!!')
- this.showModelThis = false
- },
- num_change(e, key) {
- this.ruleForm[key] = e + ''
- this.$refs.ruleForm.validateField(key)
- this.set_total_price()
- },
- set_total_price() {
- const { good_num, sale_price } = this.ruleForm
- const num = good_num * 1
- const price = sale_price * 1
- this.total_price = num * price + ''
- },
- async initForm() {
- this.loading = true
- this.rulesThis = this.rules
- console.log(this.sitem)
- const { can } = this.sitem
- this.sitem.can_name = ''
- this.sitem.is_noble = false
- if (can && can.length > 0) {
- can.forEach((a, ai) => {
- this.sitem.is_noble = a.id + '' === '6'
- this.sitem.can_name += `${ai !== 0 ? '_' : ''}${a.name}`
- })
- }
- await this.resetForm()
- this.getNewTime()
- this.set_total_price()
- this.loading = false
- },
- addrRefresh(e) {
- const { list } = e
- this.addrForm.order_addr.push(...list)
- },
- getNewTime() {
- this.newTime = new Date().valueOf()
- },
- async resetForm() {
- // 重置
- await this.$nextTick(() => {
- if (this.$refs.ruleForm) {
- this.$refs.ruleForm.resetFields()
- this.$refs.ruleForm.clearValidate()
- const {
- bidNo,
- in_num,
- in_arrival_time,
- sale_price,
- remark,
- in_companyNo
- } = this.sitem
- console.log(this.sitem)
- this.ruleForm = {
- bidNo: bidNo || '', // 竞价单反馈编号
- good_num: in_num || '0', // 商品数量
- sale_price: sale_price || '',
- sendtype: '1', // 发货方式
- arrtime: in_arrival_time || '', // 到货时间
- remark: '',
- proof_type: '1', // 通过or驳回
- proof_url: '', // 驳回至
- companyNo: in_companyNo || ''
- }
- }
- if (this.$refs.addrForm) {
- this.$refs.addrForm.resetFields()
- this.$refs.addrForm.clearValidate()
- this.addrForm = {
- order_addr: []
- }
- }
- })
- },
- openHouseModal(index) {
- const findex = this.addrForm.order_addr.findIndex((v) => v.edit === true)
- if (findex !== -1) {
- this.$message.warning('当前已有地址在编辑,请保存后再试!')
- return
- } else {
- if (index === -1) {
- this.addrForm.order_addr.push({
- edit: true,
- receipt_quantity: '',
- contactor: '',
- mobile: '',
- addr_code: [],
- addr: ''
- })
- } else {
- this.addrForm.order_addr[index].edit = true
- }
- }
- },
- // 省市区选择
- async select_area_change(e, index) {
- this.addrForm.order_addr[index].addr_code = e
- const { addr_code } = this.addrForm.order_addr[index]
- if (addr_code && addr_code.length === 3) {
- const arrCode = addr_code[addr_code.length - 1]
- // console.log(model);
- const { code, data, message } = await asyncRequest.addrall({
- code: arrCode
- })
- if (code === 0) {
- const { province, city, area } = data
- const province_name = province && province.name ? province.name : ''
- const city_name = city && city.name ? city.name : ''
- const area_name = area && area.name ? area.name : ''
- this.addrForm.order_addr[index].addr_code_name =
- province_name && city_name && area_name
- ? `${province_name}/${city_name}/${area_name}`
- : ''
- } else if (code >= 100 && code <= 104) {
- await this.logout()
- } else {
- this.$message.warning(message)
- }
- } else {
- this.addrForm.order_addr[index].addr_code_name = ''
- }
- },
- // 省市区保存某一行
- checkRow(rowIndex) {
- this.$refs.addrForm.validate((valid) => {
- if (valid) {
- this.addrForm.order_addr[rowIndex].edit = false
- } else {
- console.log('error submit!!')
- return false
- }
- })
- },
- // 省市区删除行操作
- deleteRow(index, rows) {
- rows.splice(index, 1)
- },
- async submitForm() {
- await this.$refs.ruleForm.validate(async(valid) => {
- if (valid) {
- if (this.loading) return
- this.loading = true
- const model = JSON.parse(JSON.stringify(this.ruleForm))
- // 去除上送字段空格&换行
- Object.keys(model).forEach(key => {
- if (typeof model[key] === 'string') {
- model[key] = replaceTextWrapAndSpace(model[key])
- }
- })
- model.order_addr = []
- const { sendtype, good_num } = model
- const { order_addr } = JSON.parse(JSON.stringify(this.addrForm))
- if (sendtype + '' === '1' && order_addr && order_addr.length === 0) {
- this.$message.warning('至少上传一个地址信息!')
- this.loading = false
- return
- }
- if (sendtype + '' === '1') {
- let addrT = 0
- let isAEdit = false
- order_addr.forEach((v2) => {
- if (v2.edit) {
- isAEdit = true
- }
- addrT += parseInt(v2.receipt_quantity + '')
- const model2 = {
- addr_code: v2.addr_code.toString(),
- contactor: v2.contactor,
- mobile: v2.mobile,
- addr: v2.addr,
- receipt_quantity: v2.receipt_quantity
- }
- model.order_addr.push(model2)
- })
- if (isAEdit) {
- this.$message.warning('请保存地址信息!')
- this.loading = false
- return
- }
- if (parseInt(good_num + '') !== addrT) {
- this.$message.warning('收货总数量与购买不一致!')
- this.loading = false
- return
- }
- }
- const res = await asyncRequest.consultorder(model)
- if (res && res.code === 0) {
- this.$notify.success({
- title: '下单成功!',
- message: ''
- })
- this.showModelThis = false
- // 刷新
- this.$emit('refresh')
- this.loading = false
- } else if (res && res.code >= 100 && res.code <= 104) {
- this.loading = false
- await this.logout()
- } else {
- this.loading = false
- this.$message.warning(res.message)
- }
- } else {
- console.log('error submit!!')
- return false
- }
- })
- },
- // 图片上传成功
- async UploadSuccessEventproof_url(data) {
- const { url } = data
- if (url === 'noToken') {
- await this.logout()
- } else {
- this.img_url = url
- this.set_proof_url()
- this.$message.success('图片上传成功!')
- }
- },
- // 图片上传失败
- UploadErrorEventproof_url(res) {
- if (res !== 'break') {
- this.set_proof_url()
- this.$message.error('图片上传失败!')
- }
- },
- // 判断图片规格
- 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
- },
- // 视频上传成功
- async UploadSuccessVideoproof_url(data) {
- const { url } = data
- if (url === 'noToken') {
- await this.logout()
- } else {
- this.video_url = url
- this.set_proof_url()
- this.$message.success('视频上传成功!')
- }
- },
- // 视频上传失败
- UploadErrorVideoproof_url(res) {
- if (res !== 'break') {
- this.set_proof_url()
- this.$message.error('视频上传失败!')
- }
- },
- // 判断视频规格
- beforeVideoUpload(file) {
- let isJPG = false
- if (file.type === 'video/mp4' || file.type === 'video/avi') {
- isJPG = true
- }
- const isLt2M = file.size / 1024 / 1024 < 10
- if (!isJPG) {
- this.$message.error('视频格式不正确!')
- }
- if (!isLt2M) {
- this.$message.error('视频大小不能超过 10MB!')
- }
- return isJPG && isLt2M
- },
- // 其他文件上传成功
- async UploadSuccessOtherproof_url(data) {
- const { url } = data
- if (url === 'noToken') {
- await this.logout()
- } else {
- this.other_url = url
- this.set_proof_url()
- this.$message.success('文件成功!')
- }
- },
- // 其他文件上传失败
- UploadErrorOtherproof_url(res) {
- if (res !== 'break') {
- this.set_proof_url()
- this.$message.error('文件上传失败!')
- }
- },
- // 判断其他文件规格
- beforeOtherUpload(file) {
- console.log(file)
- let isJPG = false
- if (
- file.type === 'application/vnd.ms-excel' ||
- file.type ===
- 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ||
- file.type === 'application/pdf' ||
- file.type === 'application/x-zip-compressed'
- ) {
- isJPG = true
- }
- const name = file.name
- const list = name.split('.')
- if (list[list.length - 1] === 'rar' || list[list.length - 1] === '7z') {
- isJPG = true
- }
- const isLt2M = file.size / 1024 / 1024 < 5
- if (!isJPG) {
- this.$message.error('文件格式不正确!')
- }
- if (!isLt2M) {
- this.$message.error('文件大小不能超过 5MB!')
- }
- return isJPG && isLt2M
- },
- deleteUrl(type) {
- switch (type) {
- case '1':
- this.video_url = ''
- break
- case '2':
- this.img_url = ''
- break
- case '3':
- this.other_url = ''
- break
- default:
- this.video_url = ''
- }
- this.set_proof_url()
- },
- set_proof_url() {
- const { proof_type } = this.ruleForm
- switch (proof_type) {
- case '1':
- this.ruleForm.proof_url = this.video_url
- break
- case '2':
- this.ruleForm.proof_url = this.img_url
- break
- case '3':
- this.ruleForm.proof_url = this.other_url
- break
- default:
- this.ruleForm.proof_url = this.video_url
- }
- this.$refs.ruleForm.validateField('proof_url')
- }
- }
- }
- </script>
- <style lang="scss" scoped>
- // .capitalClaim {
- .excelUploadBox {
- position: relative;
- width: 100%;
- height: 120px;
- line-height: 120px;
- box-sizing: border-box;
- &:hover {
- cursor: pointer;
- }
- .el-icon-receiving {
- width: 100%;
- text-align: center;
- height: 50px;
- display: block;
- font-size: 32px;
- line-height: 90px;
- color: #d3d4d6;
- }
- .boxM {
- width: 100%;
- display: block;
- text-align: center;
- line-height: 65px;
- height: 60px;
- color: #909399;
- }
- }
- .excelUpload {
- top: 0;
- left: 0;
- position: absolute;
- z-index: 2;
- width: 100%;
- height: 120px;
- line-height: 120px;
- box-sizing: border-box;
- }
- .excelUploadRes {
- width: 100%;
- height: 120px;
- line-height: 120px;
- box-sizing: border-box;
- i {
- width: 55px;
- height: 120px;
- line-height: 120px;
- text-align: center;
- font-size: 20px;
- &.fl {
- padding-left: 16px;
- }
- &.fr {
- padding-right: 16px;
- &:hover {
- cursor: pointer;
- }
- }
- }
- span {
- width: 386px;
- line-height: 16px;
- margin: 52px 0 0 0;
- font-size: 16px;
- }
- }
- // }
- </style>
|