123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856 |
- <template>
- <el-dialog
- v-loading="loading || detailLoading"
- :title="title"
- :center="true"
- align="left"
- top="10vh"
- 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)"
- @close="handleClose"
- >
- <el-card style="margin: -20px 0 0 0">
- <el-row :gutter="10">
- <el-col :span="24">
- <el-form
- ref="ruleForm"
- :model="ruleForm"
- status-icon
- :rules="rulesThis"
- label-width="80px"
- label-position="left"
- class="demo-ruleForm"
- size="mini"
- >
- <el-divider>
- <el-tag size="mini">销售订单信息</el-tag>
- </el-divider>
- <el-row>
- <el-col :span="12">
- <el-form-item label="销售方公司:" label-width="100px" prop="companyNo">
- <p style="font-size: 14px; color: #606266; font-weight: 700">
- {{ getCompanyWithCode(ruleForm.companyNo).name }}
- </p>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="购买方公司" label-width="100px" prop="khNo">
- <search-customer
- size="mini"
- :names="khName"
- :disabled="id !== '003'"
- :is-detail="type !== 'add'"
- :value="ruleForm.khNo"
- placeholder="购买方公司"
- @searchChange="handleCustomerChange"
- />
- </el-form-item>
- </el-col>
- <!-- <el-col :span="7">
- <el-form-item label="采购员" prop="buyerid">
- <search-account
- size="mini"
- placeholder="采购员"
- level="2"
- :value="ruleForm.buyerid"
- :names="ruleForm.buyer_name"
- :is-detail="true"
- @searchChange="handleHandoverName"
- />
- </el-form-item>
- </el-col>-->
- <el-col :span="12">
- <el-form-item label="商品分类" prop="cat_id">
- <company-sort
- :value="ruleForm.cat_id"
- :placeholder="'商品分类'"
- :disabled="id !== '003'"
- :size="'mini'"
- :company-no="ruleForm.companyNo"
- :names="cat_id_name"
- :is-detail="type !== 'add'"
- @searchChange="goods_class_change"
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="所属平台" prop="platform_id">
- <search-terrace
- :value="ruleForm.platform_id"
- :disabled="id !== '003'"
- :size="'mini'"
- :is-detail="false"
- :is_show="'0'"
- :placeholder="'所属平台'"
- @searchChange="platform_codesearchChange"
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="平台订单编号" prop="poCode" label-width="110px">
- <el-input
- v-model="ruleForm.poCode"
- placeholder="平台订单编号"
- maxlength="50"
- :disabled="id === '007'"
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="其他单号" prop="workCode">
- <template #label>
- <p style="margin-left: 10px">其他单号</p>
- </template>
- <el-input
- v-model="ruleForm.workCode"
- :disabled="id === '007'"
- maxlength="50"
- placeholder="其他单号"
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="项目经理" prop="managerid">
- <project-manager
- size="mini"
- disabled
- :value="ruleForm.managerid"
- :names="ruleForm.manager"
- :is-detail="true"
- placeholder="项目经理"
- @searchChange="managerChange"
- style="width: 100%"
- />
- </el-form-item>
- </el-col>
- </el-row>
- <el-divider>
- <el-tag size="mini">收货信息</el-tag>
- </el-divider>
- <el-row>
- <el-col :span="8">
- <el-form-item label="收货人" prop="contactor">
- <el-input
- v-model="ruleForm.contactor"
- :disabled="id === '007'"
- placeholder="收货人"
- maxlength="30"
- />
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="联系电话" prop="mobile">
- <el-input
- v-model="ruleForm.mobile"
- :disabled="id === '007'"
- placeholder="联系电话"
- maxlength="11"
- />
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="发货时间" prop="sendtime">
- <el-date-picker
- :picker-options="pickerOptions"
- v-model="ruleForm.sendtime"
- value-format="yyyy-MM-dd"
- :disabled="id === '007'"
- placeholder="发货时间"
- style="width: 100%"
- type="datetime"
- />
- </el-form-item>
- </el-col>
- <el-col :span="24">
- <el-form-item label="联系地址" prop="addr">
- <el-input
- v-model="ruleForm.addr"
- :disabled="id === '007'"
- maxlength="100"
- placeholder="联系地址"
- />
- </el-form-item>
- </el-col>
- </el-row>
- <el-divider>
- <el-tag size="mini">商品信息</el-tag>
- </el-divider>
- <el-row>
- <el-col :span="12">
- <el-form-item label="供应商" label-width="100px" prop="supplierNo">
- <search-supplier
- size="mini"
- placeholder="供应商"
- :value="ruleForm.supplierNo"
- :names="supplierName"
- :disabled="id === '007'"
- :is-detail="type !== 'add'"
- @searchChange="handleSupplierChange"
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="商品名称" prop="goodName">
- <el-input
- v-model="ruleForm.goodName"
- placeholder="商品名称"
- maxlength="50"
- :disabled="id !== '003'"
- />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="6">
- <el-form-item label="数量" prop="goodNum" label-width="60px">
- <el-input-number
- v-model="ruleForm.goodNum"
- :disabled="id !== '003'"
- style="width: 100%"
- controls-position="right"
- placeholder="数量"
- :precision="0"
- :min="0"
- :step="1"
- />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="销售总额" prop="sale_total">
- <el-input-number
- v-model="ruleForm.sale_total"
- :disabled="id !== '003' || disabledField"
- style="width: 100%"
- controls-position="right"
- placeholder="销售总额"
- :precision="2"
- :min="0"
- :step="0.01"
- @change="number_change_total($event, 'sale_total')"
- />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="采购总额" prop="cgd_total">
- <el-input-number
- v-model="ruleForm.cgd_total"
- :disabled="id !== '003' || disabledField"
- style="width: 100%"
- controls-position="right"
- placeholder="采购总额"
- :precision="2"
- :min="0"
- :step="0.01"
- @change="number_change_total($event, 'cgd_total')"
- />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="采购毛利率" label-width="100px" prop="cgd_tax">
- <!-- <el-input-number
- v-model="ruleForm.cgd_tax"
- style="width: 100%"
- :disabled="id === '007'"
- controls-position="right"
- placeholder="采购毛利率"
- :precision="2"
- :min="0"
- :max="100"
- :step="0.01"
- @change="number_change($event, 2)"
- />-->
- <digital-input
- :values="ruleForm.cgd_tax"
- :placeholder="'采购毛利率'"
- :min="0"
- :max="100"
- :disabled="id === '007' || disabledField"
- :position="'right'"
- :precision="2"
- :size="'mini'"
- :controls="false"
- :append="'%'"
- @reschange="number_change($event, 2)"
- />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="6">
- <el-form-item label="单位" prop="goodUnit" label-width="60px">
- <search-unit
- :value="ruleForm.goodUnit"
- :disabled="type === 'view' || type === 'editCoin'"
- :size="'mini'"
- :is-detail="type !== 'add'"
- :names="unit_name"
- :placeholder="'单位'"
- @searchChange="unitsearchChange"
- />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="销售单价" prop="goodPrice">
- <el-input-number
- v-model="ruleForm.goodPrice"
- :disabled="id !== '003' || disabledField"
- style="width: 100%"
- controls-position="right"
- placeholder="单价"
- :precision="2"
- :min="0"
- :step="0.01"
- @change="number_change($event, 1)"
- />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="采购单价" prop="cgdPrice">
- <el-input-number
- v-model="ruleForm.cgdPrice"
- style="width: 100%"
- :disabled="id === '007' || disabledField"
- controls-position="right"
- placeholder="采购单价"
- :precision="2"
- :min="0"
- :step="0.01"
- @change="number_change($event, 1)"
- />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="税率" prop="tax">
- <search-tax
- :disabled="id === '007'"
- :value="ruleForm.tax"
- :size="'mini'"
- :is-detail="type !== 'add'"
- :placeholder="'税点'"
- @searchChange="handleTaxChange"
- />
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- </el-col>
- <el-col :span="24" style="text-align: right">
- <el-button v-if="id !== '007'" type="primary" @click="submitForm"
- >保 存</el-button
- >
- <el-button @click="showModelThis = false">{{
- id == "007" ? "关 闭" : "取 消"
- }}</el-button>
- </el-col>
- </el-row>
- </el-card>
- </el-dialog>
- </template>
- <script>
- import asyncRequest from "@/apis/service/netOrderEntry/netOrderEnter";
- import companyHelper from "@/mixins/companyHelper";
- import { accMul, accDiv, accSub, isPhone, isMobile } from "@/utils/validate";
- import resToken from "@/mixins/resToken";
- const defaultData = {
- manager: "",
- managerid: [],
- addr_code: [],
- cgd_total: "",
- cgdPrice: "",
- // buyerid: "",
- // buyer_name: "",
- platform_id: "",
- cgd_tax: "",
- workCode: "",
- poCode: "",
- khNo: "",
- companyNo: "",
- contactor: "",
- mobile: "",
- addr: "",
- sendtime: "",
- supplierNo: "",
- cat_id: "",
- goodName: "",
- goodNum: "",
- goodPrice: "",
- sale_total: "",
- goodUnit: "",
- tax: "",
- };
- export default {
- name: "Terrace",
- mixins: [resToken, companyHelper],
- props: ["showModel", "id", "sitem"],
- data() {
- const validatemobile = (rule, value, callback) => {
- if (value !== "") {
- if (isPhone(value) || isMobile(value)) {
- callback();
- } else {
- callback(new Error("联系电话格式不正确!"));
- }
- } else {
- callback(new Error("请输入联系电话!"));
- }
- };
- return {
- loading: false,
- detailLoading: false,
- title: "添加销售订单信息",
- khName: "",
- accounts: [],
- cat_id_name: "",
- showModelThis: this.showModel,
- pickerOptions: {
- disabledDate: (time) => time.getTime() > new Date(),
- },
- names: [],
- unit_name: "",
- companyName: "",
- ruleForm: { ...defaultData },
- rulesThis: this.rules,
- rules: {
- goodUnit: [
- {
- required: true,
- message: "请选择单位",
- trigger: "blur",
- },
- ],
- // addr_code: [
- // {
- // type: "array",
- // required: true,
- // message: "请选择收货省市区",
- // trigger: "blur",
- // },
- // ],
- platform_id: [
- {
- required: true,
- message: "请输入所属平台",
- trigger: "blur",
- },
- ],
- cgd_tax: [
- {
- required: true,
- message: "请输入采购毛利率",
- trigger: "blur",
- },
- ],
- cat_id: [
- {
- required: true,
- message: "请选择商品分类",
- trigger: "change",
- },
- ],
- supplierNo: [
- {
- type: "array",
- required: true,
- message: "请选择供应商公司",
- trigger: "change",
- },
- ],
- qrdType: [
- {
- required: true,
- message: "请输入订单来源",
- trigger: "blur",
- },
- ],
- sale_total: [
- {
- required: true,
- message: "请输入货款总金额",
- trigger: "blur",
- },
- ],
- // workCode: [
- // {
- // required: true,
- // message: '请输入单据号',
- // trigger: 'blur'
- // }
- // ],
- poCode: [
- {
- required: true,
- message: "请输入PO编号",
- trigger: "blur",
- },
- ],
- khNo: [
- {
- type: "array",
- required: true,
- message: "请选择购买方公司",
- trigger: "change",
- },
- ],
- tax: [
- {
- required: true,
- message: "请选择税率",
- trigger: "change",
- },
- ],
- companyNo: [
- {
- required: true,
- message: "请选择销售方公司",
- trigger: "change",
- },
- ],
- contactor: [
- {
- required: true,
- message: "请输入收货人",
- trigger: "blur",
- },
- ],
- mobile: [
- {
- required: true,
- validator: validatemobile,
- trigger: "blur",
- },
- ],
- addr: [
- {
- required: true,
- message: "请输入联系地址",
- trigger: "blur",
- },
- ],
- sendtime: [
- {
- required: true,
- message: "请输入发货时间",
- trigger: "change",
- },
- ],
- goodName: [
- {
- required: true,
- message: "请输入商品名称",
- trigger: "blur",
- },
- ],
- goodPrice: [
- {
- required: true,
- message: "请输入销售单价",
- trigger: "blur",
- },
- ],
- cgdPrice: [
- {
- required: true,
- message: "请选择采购单价",
- trigger: "blur",
- },
- ],
- goodNum: [
- {
- required: true,
- message: "请输入数量",
- trigger: "blur",
- },
- ],
- cgd_total: [
- {
- required: true,
- message: "请输入采购总额",
- trigger: "blur",
- },
- ],
- },
- };
- },
- computed: {
- totalWatchSource() {
- const { goodNum, goodPrice } = this.ruleForm;
- return { goodNum, goodPrice };
- },
- cgdTotalWatchSource() {
- const { goodNum, cgdPrice } = this.ruleForm;
- return { goodNum, cgdPrice };
- },
- },
- watch: {
- showModel: function (val) {
- this.showModelThis = val;
- if (val) {
- this.initForm();
- }
- },
- showModelThis(val) {
- if (!val) {
- this.$emit("cancel");
- }
- },
- // totalWatchSource: {
- // handler({ goodPrice, goodNum }) {
- // if (goodPrice === 0 || goodNum === 0) {
- // this.ruleForm.sale_total = 0
- // return
- // }
- // this.ruleForm.sale_total = accMul(goodPrice, goodNum)
- // },
- // deep: true
- // },
- // cgdTotalWatchSource: {
- // handler({ cgdPrice, goodNum }) {
- // if (cgdPrice === 0 || goodNum === 0) {
- // this.ruleForm.cgd_total = 0
- // return
- // }
- // this.ruleForm.cgd_total = accMul(cgdPrice, goodNum)
- // },
- // deep: true
- // }
- },
- methods: {
- async handleHandoverName(e) {
- this.ruleForm.buyerid = e && e.id ? [e.id] : "";
- this.ruleForm.buyer_name = e && e.label ? e.label : "";
- this.$refs.ruleForm.validateField("buyerid");
- },
- async select_area_change(e) {
- this.ruleForm.addr_code = e;
- this.$refs.ruleForm.validateField("addr_code");
- },
- number_change(e, type) {
- this.ruleForm[type] = e;
- },
- handleClose() {
- this.showModelThis = false;
- this.companyName = "";
- this.khName = "";
- this.supplierName = "";
- this.ruleForm = { ...defaultData };
- },
- async initForm() {
- this.loading = true;
- // await this.getAccounts();
- if (this.id === "003") {
- this.title = "添加销售订单信息";
- this.rulesThis = this.rules;
- } else if (this.id === "005") {
- this.title = "修改销售订单信息";
- this.rulesThis = this.rules;
- } else {
- this.title = "销售订单信息详情";
- this.rulesThis = {};
- }
- await this.resetForm();
- this.loading = false;
- },
- handleCompanyChange(e) {
- this.ruleForm.companyNo = e.code || "";
- this.$refs.ruleForm.validateField("companyNo");
- },
- handleCustomerChange(e) {
- this.ruleForm.khNo = e.code ? [e.code] : "";
- this.$refs.ruleForm.validateField("khNo");
- },
- handleSupplierChange(e) {
- this.ruleForm.supplierNo = e.code ? [e.code] : "";
- this.$refs.ruleForm.validateField("supplierNo");
- },
- handleGoodClassChange(e) {
- this.ruleForm.cat_id = e;
- this.$refs.ruleForm.validateField("cat_id");
- },
- handleTaxChange(e) {
- this.ruleForm.tax = e;
- this.$refs.ruleForm.validateField("tax");
- },
- unitsearchChange(e) {
- const { id, code, label } = e;
- this.ruleForm.goodUnit = code ? [code] : [];
- this.$refs.ruleForm.validateField("goodUnit");
- },
- async resetForm() {
- // 重置
- await this.$nextTick(() => {
- if (this.$refs.ruleForm) {
- this.$refs.ruleForm.resetFields();
- this.$refs.ruleForm.clearValidate();
- }
- });
- if (this.id === "003") {
- this.ruleForm.companyNo = this.currentCompany;
- return;
- }
- if (this.id !== "003") this.getDetail();
- },
- number_change_total(current, prop) {
- // const isCgdTotal = prop === 'cgd_total'
- // const { goodNum } = this.ruleForm
- // this.ruleForm[isCgdTotal ? 'cgdPrice' : 'goodPrice'] = accDiv(current, goodNum)
- this.ruleForm[prop] = current;
- // let tax = 0
- // tax = accMul(accSub(1, accDiv(this.ruleForm.cgd_total, this.ruleForm.sale_total)), 100)
- // this.ruleForm.cgd_tax = tax
- // if (this.ruleForm.cgd_total && this.ruleForm.sale_total) {
- // this.ruleForm['cgd_tax'] = accMul(accDiv(this.ruleForm.cgd_total, this.ruleForm.sale_total), 100) || 0
- // }
- },
- async getDetail() {
- this.detailLoading = true;
- const { orderCode } = this.sitem;
- const { data } = await asyncRequest.detail({ orderCode });
- const {
- cat_id,
- buyerid,
- khNo,
- supplierNo,
- supplierNanme,
- khName,
- goodUnit,
- tax,
- addr_code,
- unitName,
- manager,
- managerid,
- ...rest
- } = data;
- this.ruleForm = {
- ...rest,
- manager: manager || "",
- managerid: managerid ? [managerid] : [],
- buyerid: buyerid ? [buyerid] : [],
- addr_code: addr_code ? addr_code.split(",") : [],
- cat_id: cat_id && cat_id.length === 3 ? [cat_id[cat_id.length - 1]] : [],
- supplierNo: supplierNo ? [supplierNo] : [],
- khNo: khNo ? [khNo] : [],
- tax: tax ? tax + "%" : "",
- goodUnit: goodUnit ? [goodUnit] : "",
- };
- this.cat_id_name =
- cat_id && cat_id.length === 3 ? cat_id.map(({ name }) => name).join("_") : "";
- this.unit_name = unitName;
- this.khName = khName;
- this.supplierName = supplierNanme;
- this.detailLoading = false;
- },
- platform_codesearchChange(e) {
- const { id, label, pay_name } = e;
- this.ruleForm.platform_id = id || "";
- this.pay_name = pay_name || "";
- this.$refs.ruleForm.validateField("platform_id");
- },
- // async getAccounts() {
- // const res = await asyncRequest.accountall(this.dataForm);
- // if (res && res.code === 0 && res.data) {
- // this.accounts = res.data;
- // } else if (res && res.code >= 100 && res.code <= 104) {
- // await this.logout();
- // } else {
- // this.$message.warning(res.message);
- // }
- // },
- async goods_class_change(e) {
- const { id } = e;
- this.ruleForm.cat_id = id ? [id] : [];
- this.$refs.ruleForm.validateField("cat_id");
- },
- async submitForm() {
- console.log(111);
- await this.$refs.ruleForm.validate(async (valid) => {
- if (valid) {
- if (this.loading) {
- return;
- }
- this.loading = true;
- const model = JSON.parse(JSON.stringify(this.ruleForm));
- model.supplierNo = model.supplierNo[0];
- model.khNo = model.khNo[0];
- model.buyerid = Array.isArray(model.buyerid) ? model.buyerid[0] : model.buyerid;
- model.cat_id = model.cat_id ? model.cat_id[model.cat_id.length - 1] : "";
- model.addr_code = model.addr_code.join(",");
- model.tax = model.tax.split("%")[0];
- model.pay_name = this.pay_name;
- model.goodUnit = Array.isArray(model.goodUnit)
- ? model.goodUnit[0]
- : model.goodUnit;
- let res = {};
- if (this.id === "003") {
- delete model["id"];
- res = await asyncRequest.add(model);
- } else {
- res = await asyncRequest.update(model);
- }
- this.loading = false;
- if (res && res.code === 0) {
- const title = this.id === "003" ? "添加成功!" : "修改成功!";
- this.$notify.success({
- title,
- message: "",
- });
- this.showModelThis = false;
- // 刷新
- this.$emit("refresh");
- } else if (res && res.code >= 100 && res.code <= 104) {
- await this.logout();
- } else {
- this.$message.warning(res.message);
- }
- } else {
- console.log("error submit!!");
- return false;
- }
- });
- },
- },
- };
- </script>
- <style lang="scss" scoped>
- .terrace {
- }
- </style>
|