Merge branch 'dev' of http://192.168.5.5:10010/r/web/crm-web into dev
New file |
| | |
| | | # 所有环境默认 |
| | | |
| | | # 页面 title 前缀 |
| | | VUE_APP_TITLE=Basic |
| | | NODE_ENV=development |
| | | VUE_APP_BATH_PATH='http://192.168.20.119:9083' |
| | | # 网络请求公用地址 |
| | | VUE_APP_API=/api/ |
| | | |
| | | # 仓库地址 |
| | | VUE_APP_REPO="" |
| | | |
| | | # 国际化配置 |
| | | VUE_APP_I18N_LOCALE=zh-chs |
| | | VUE_APP_I18N_FALLBACK_LOCALE=en |
| | | |
| | | # element 颜色 |
| | | VUE_APP_ELEMENT_COLOR=#2A78FB |
New file |
| | |
| | | # 开发环境 |
| | | # 指定构建模式 |
| | | NODE_ENV=development |
| | | |
| | | # 页面 title 前缀 |
| | | VUE_APP_TITLE=Basic |
| | | VUE_APP_BATH_PATH='http://192.168.20.119:9083' |
| | | |
New file |
| | |
| | | # 构建预览页面 |
| | | |
| | | # 指定构建模式 |
| | | NODE_ENV=production |
| | | |
| | | # 标记当前构建方式 |
| | | VUE_APP_BUILD_MODE=PREVIEW |
| | | VUE_APP_BATH_PATH='http://www.fai365.com:9081 |
| | | VUE_APP_SCOURCE_LINK=TRUE |
| | | |
| | | # 部署路径 |
| | | VUE_APP_PUBLIC_PATH=/ |
| | |
| | | "scripts": { |
| | | "serve": "vue-cli-service serve", |
| | | "build": "vue-cli-service build", |
| | | "lint": "vue-cli-service lint" |
| | | "lint": "vue-cli-service lint", |
| | | "build:preview": "NODE_OPTIONS=--max_old_space_size=4096 vue-cli-service build --mode preview", |
| | | "test:unit": "vue-cli-service test:unit" |
| | | }, |
| | | "dependencies": { |
| | | "axios": "^1.4.0", |
New file |
| | |
| | | // 销售明细 交付类型 |
| | | const deliveryType = [ |
| | | { |
| | | name: "一次发货", |
| | | id: 1 |
| | | }, |
| | | { |
| | | name: "多次发货", |
| | | id: 2 |
| | | } |
| | | ] |
| | | |
| | | export const getDataByType = (type) => { |
| | | if (type == "deliveryType") { |
| | | return deliveryType |
| | | } |
| | | } |
| | |
| | | <div class="page-view"> |
| | | <el-form ref="form" :model="tableList" :show-message="false" label-position="right"> |
| | | <el-table |
| | | ref="fromTable" |
| | | :data="tableList.tableData" |
| | | :show-summary="showSummary.show" |
| | | :summary-method="getSummaries" |
| | | :span-method="arraySpanMethod" |
| | | style="width: 100%" |
| | | @selection-change="handleSelectionChange" |
| | | :row-key="(row) => row.productId" |
| | | > |
| | | <el-table-column v-if="selectBox" type="selection" :reserve-selection="true" width="40" align="center"> |
| | | </el-table-column> |
| | | <el-table-column v-if="tableList.isReturn" type="index" label="#" width="50" align="center"></el-table-column> |
| | | <el-table-column |
| | | v-for="(item, i) in tableList.tableColumn" |
| | |
| | | </el-form-item> |
| | | <span v-else>{{ scope.row[item.prop] }}</span> |
| | | </template> |
| | | <el-form-item |
| | | v-else-if="item.inputNumber && selectBox" |
| | | label=" " |
| | | :prop="'tableData.' + scope.$index + '.' + item.prop" |
| | | :rules="[{ required: item.isRequird ? true : false, message: '输入不能为空' }]" |
| | | > |
| | | <el-input-number |
| | | v-model="scope.row[item.prop]" |
| | | placeholder="" |
| | | :min="0" |
| | | :controls="false" |
| | | size="mini" |
| | | style="width: 100%; margin-right: 5px" |
| | | @change=" |
| | | (val) => { |
| | | commonInputChange(val, item.prop, scope.row) |
| | | } |
| | | " |
| | | ></el-input-number> |
| | | </el-form-item> |
| | | <span v-else style="text-align: right">{{ scope.row[item.prop] }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <slot name="tableButton" /> |
| | | </el-table> |
| | | </el-form> |
| | | <div v-if="!detailEnter" style="margin: 10px"> |
| | |
| | | >重算</el-button |
| | | > |
| | | </div> |
| | | <div v-if="false && (showSummary.total || showSummary.refundable)" style="height: 42px; line-height: 42px" > |
| | | <div v-if="false && (showSummary.total || showSummary.refundable)" style="height: 42px; line-height: 42px"> |
| | | <el-row :gutter="10"> |
| | | <el-col v-if="showSummary.total" :span="3" :offset="21"> |
| | | <span style="font-weight: bold">合计</span> |
| | |
| | | components: { SelectCommonDialog }, |
| | | props: { |
| | | detailEnter: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | selectBox: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | |
| | | } |
| | | }, |
| | | created() { |
| | | this.getProductList() |
| | | if (!this.selectBox) { |
| | | this.getProductList() |
| | | } |
| | | this.tableList = this.productTableList |
| | | if (this.tableList.tableData.length === 1 && this.tableList.tableData[0].name === "") { |
| | | this.isRecalculate = false |
| | |
| | | page: 1, |
| | | pageSize: 5 |
| | | }).then((res) => { |
| | | console.log(res,"产品名称") |
| | | console.log(res, "产品名称") |
| | | if (res.code === 200) { |
| | | if (res.data.data && res.data.data.length > 0) { |
| | | this.productList = res.data.data |
| | |
| | | handleReserve(row) { |
| | | return row._id ? row._id : row.id |
| | | }, |
| | | // 多选 |
| | | handleSelectionChange(val) { |
| | | this.$emit("getSelectArray", val) |
| | | }, |
| | |
| | | }) |
| | | this.$emit("clearupProduct", this.tableList.tableData) |
| | | } |
| | | // 多选设置已选中 |
| | | // toggleSelection(rows) { |
| | | // console.log("88888888888888888888888888888888888888888") |
| | | // console.log(rows) |
| | | // if (rows) { |
| | | // rows.forEach((row) => { |
| | | // this.$refs.fromTable.toggleRowSelection(row, true) |
| | | // console.log(row) |
| | | // }) |
| | | // } |
| | | // } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | // 销售明细单 |
| | | async getSalesDetailsList() { |
| | | await getSalesDetailsList({ |
| | | // keyword: this.keyword, |
| | | // keywordType: this.keywordType, |
| | | clientId:this.editCommonConfig.clientId, |
| | | clientId:Number(this.editCommonConfig.clientId), |
| | | page: this.pagerOptions.currPage, |
| | | pageSize: this.pagerOptions.pageSize |
| | | }).then((res) => { |
| | |
| | | }, |
| | | async getSalesReturnList() { |
| | | await getSalesReturnList({ |
| | | // keyword: this.keyword, |
| | | // keywordType: this.keywordType, |
| | | clientId:this.editCommonConfig.clientId, |
| | | clientId:Number(this.editCommonConfig.clientId), |
| | | page: this.pagerOptions.currPage, |
| | | pageSize: this.pagerOptions.pageSize |
| | | }).then((res) => { |
| | |
| | | <el-input |
| | | v-if=" |
| | | editConfig.title == '编辑' || |
| | | (editConfig.title == '新建' && |
| | | codenumer && |
| | | (explain != '' || isIdDisabled)) |
| | | (editConfig.title == '新建' && codenumer && (explain != '' || isIdDisabled)) |
| | | " |
| | | :disabled="editConfig.title == '编辑'" |
| | | v-model="editConfig.infomation.number" |
| | | placeholder="请输入编码" |
| | | > |
| | | </el-input> |
| | | <span v-else-if="editConfig.title == '新建'" style="color: #f56c6c" |
| | | <span v-else-if="editConfig.title == '新建'" style="color: #f56c6c" |
| | | >请优先配置编码规范 <el-button type="text" @click="numberClick"> 配置规范 </el-button></span |
| | | > |
| | | <!-- <WordInput |
| | |
| | | <i class="el-icon-remove-outline" title="清除"></i> |
| | | </div> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="发货日期" prop="sendTime"> |
| | | <el-date-picker |
| | | v-model="editConfig.infomation.sendTime" |
| | | value-format="yyyy-MM-dd" |
| | | type="date" |
| | | placeholder="选择日期" |
| | | style="width: 100%" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | dialogWidth: "50%", |
| | | editConfig: this.editCommonConfig, |
| | | rules: { |
| | | number: [{ required: true, validator: this.validateCheckCode, trigger: ["blur",'change'] }], |
| | | number: [{ required: true, validator: this.validateCheckCode, trigger: ["blur", "change"] }], |
| | | client_name: [{ required: true, message: "请选择客户名称", trigger: "change" }], |
| | | member_id: [{ required: true, message: "请选择", trigger: "change" }], |
| | | contractName: [{ required: true, message: "请输入合同名称", trigger: "blur" }] |
| | | contractName: [{ required: true, message: "请输入合同名称", trigger: "blur" }], |
| | | quotation_number: [{ required: true, message: "请选择销售报价单", trigger: "change" }] |
| | | }, |
| | | memberOptions: [], |
| | | statusOptions: [], // 合同状态 |
| | |
| | | quotation_id: this.quotationId || 0, |
| | | status_id: data.statusId || 0, |
| | | codeStandID: data.ID, |
| | | sendTime: data.sendTime || "" |
| | | } |
| | | return params |
| | | }, |
| | |
| | | this.unflodCollapseStr = "收起" |
| | | this.isUnflod = true |
| | | } |
| | | }, |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | this.tableData = data |
| | | this.productTableList.tableData = this.tableData |
| | | }, |
| | | // 订单编码单独校验 |
| | | // 销售机会单独校验 |
| | | checkChance(rule, value, callback) { |
| | | if (this.editConfig.infomation.sale_chance_name && this.editConfig.infomation.sale_chance_name.length > 0) { |
| | | callback() |
| | |
| | | <el-input |
| | | v-if=" |
| | | editConfig.title == '编辑' || |
| | | (editConfig.title == '新建' && |
| | | codenumer && |
| | | (explain != '' || isIdDisabled)) |
| | | (editConfig.title == '新建' && codenumer && (explain != '' || isIdDisabled)) |
| | | " |
| | | :disabled="editConfig.title == '编辑'" |
| | | v-model="editConfig.infomation.number" |
| | | placeholder="请输入编码" |
| | | > |
| | | </el-input> |
| | | <span v-else-if="editConfig.title == '新建'" style="color: #f56c6c" |
| | | <span v-else-if="editConfig.title == '新建'" style="color: #f56c6c" |
| | | >请优先配置编码规范 <el-button type="text" @click="numberClick"> 配置规范 </el-button></span |
| | | > |
| | | <!-- <WordInput |
| | |
| | | </el-col> |
| | | |
| | | <el-col :span="12"> |
| | | <el-form-item label="销售机会" prop="saleChanceId"> |
| | | <el-form-item label="销售机会" prop="sale_chance_name"> |
| | | <div class="custom-name"> |
| | | <el-autocomplete |
| | | style="width: 100%" |
| | |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <!-- <el-col :span="12"> |
| | | <el-form-item label="销售子单" prop="subbill_name"> |
| | | <div class="custom-name"> |
| | | <el-autocomplete |
| | |
| | | </div> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | <!-- <el-col :span="12"> |
| | | <el-form-item label="选择源单" prop="selSourceOrder"> |
| | | <el-select v-model="editConfig.infomation.selSourceOrder" size="mini" style="width: 63%"> |
| | | <el-option |
| | | v-for="item in selSourceOrderOptions" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> --> |
| | | <el-col :span="12"> |
| | | <el-form-item label="销售报价单" prop="quotation_number"> |
| | | <div class="custom-name"> |
| | | <el-autocomplete |
| | | v-model="editConfig.infomation.quotation_number" |
| | | :fetch-suggestions=" |
| | | (queryString, callback) => { |
| | | querySearchAsync(queryString, callback, 'quotation') |
| | | } |
| | | " |
| | | value-key="number" |
| | | @select="handleSelectClient('quotation', $event)" |
| | | style="width: 100%" |
| | | placeholder="请先选择销售机会" |
| | | :disabled="isAddQuatation" |
| | | ></el-autocomplete> |
| | | <div v-if="!isAddQuatation" class="common-select-btn" @click="selClientClick('quotation')"> |
| | | <i class="el-icon-circle-plus-outline" title="选择"></i> |
| | | </div> |
| | | <div |
| | | v-if=" |
| | | editConfig.infomation.quotation_number && |
| | | editConfig.infomation.quotation_number.length > 0 && |
| | | !isAddQuatation |
| | | " |
| | | class="common-select-btn" |
| | | @click="clearupClient('quotation')" |
| | | > |
| | | <i class="el-icon-remove-outline" title="清除"></i> |
| | | </div> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="签约日期" prop="signTime"> |
| | | <el-date-picker |
| | |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <!-- <el-col :span="12"> |
| | | <el-form-item label="微信订单状态" prop="wechatOrderStatus"> |
| | | <div class="common-select"> |
| | | <el-select |
| | | v-model="editConfig.infomation.wechatOrderStatus" |
| | | placeholder="请选择" |
| | | class="common-select-sel" |
| | | size="mini" |
| | | > |
| | | <el-option |
| | | v-for="item in wechatOrderStatusOptions" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | <div class="common-select-btn"> |
| | | <i class="el-icon-setting"></i> |
| | | </div> |
| | | </div> |
| | | <el-col :span="12"> |
| | | <el-form-item label="交付类型" prop="deliverType"> |
| | | <el-select |
| | | v-model="editConfig.infomation.deliverType" |
| | | placeholder="请选择" |
| | | size="mini" |
| | | style="width: 100%" |
| | | > |
| | | <el-option v-for="item in deliveryTypeList" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> --> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <!-- 收货信息 --> |
| | |
| | | </div> |
| | | <div class="product-view"> |
| | | <CommonFormTableView |
| | | ref="commonFormTableView" |
| | | :detail-enter="true" |
| | | :select-box="true" |
| | | :show-summary="showSummary" |
| | | :product-table-list="productTableList" |
| | | @inputContent="inputContent" |
| | | @addProductClick="addProductClick" |
| | | @emptyProductClick="emptyProductClick" |
| | | @recalculateProductClick="recalculateProductClick" |
| | | @clearupProduct="clearupProduct" |
| | | /> |
| | | @getSelectArray="getSelectArray" |
| | | ></CommonFormTableView> |
| | | </div> |
| | | <!-- 选择审批流程 --> |
| | | <!-- <div v-if="editConfig.title === '新建'" class="basic-info-title">选择审批流程</div> |
| | |
| | | import { getSaleChanceList } from "@/api/sales/salesOpportunity" |
| | | import { getSubOrderList } from "@/api/sales/subOrder" |
| | | import SelectCommonDialog from "@/views/other/commonDialog/SelectCommonDialog" |
| | | |
| | | import { getDataByType } from "@/api/data" |
| | | import { mapActions } from "vuex" |
| | | import { getQuotationList } from "@/api/sales/quotation" |
| | | |
| | | export default { |
| | | name: "AddSalesDetailsDialog", |
| | |
| | | rules: { |
| | | client_name: [{ required: true, message: "请选择客户名称", trigger: "change" }], |
| | | // subbill_name: [{ required: true, message: "请选择销售子单", trigger: "change" }], |
| | | number: [{ required: true,validator: this.validateCheckCode, trigger: ["blur",'change'] }], |
| | | number: [{ required: true, validator: this.validateCheckCode, trigger: ["blur", "change"] }], |
| | | signTime: [{ required: true, message: "请选择签约日期", trigger: "change" }], |
| | | memberId: [{ required: true, message: "请选择销售负责人", trigger: "change" }] |
| | | memberId: [{ required: true, message: "请选择销售负责人", trigger: "change" }], |
| | | sale_chance_name: [{ required: true, message: "请选择销售机会", trigger: "change" }], |
| | | quotation_number: [{ required: true, message: "请选择销售报价单", trigger: "change" }] |
| | | // approvalOpinion: [{ required: true, message: "请输入", trigger: "blur" }] |
| | | }, |
| | | memberOptions: [], |
| | |
| | | infomation: {} |
| | | }, |
| | | amountTotal: 0, |
| | | isNameChanceEdit: false |
| | | isNameChanceEdit: false, |
| | | isAddQuatation: true, |
| | | // 交付类型 |
| | | deliveryTypeList: getDataByType("deliveryType"), |
| | | quotationList: [], |
| | | quotationId: this.editCommonConfig.infomation.quotationId, |
| | | tableData: [], |
| | | selProductData: [] |
| | | } |
| | | }, |
| | | created() { |
| | | if (this.editConfig.title !== "新建") { |
| | | this.isAddQuatation = false |
| | | } |
| | | this.$store.dispatch("geClient") |
| | | // this.$store.dispatch("geChance") |
| | | // this.$store.dispatch("getSubunit") |
| | | this.setTableForm() |
| | | this.getCommonData() |
| | | this.formInfo() |
| | | // if (this.editConfig.title === "新建" && this.editConfig.infomation.client_name.length > 0) { |
| | | // this.isNameChanceEdit = true |
| | | // } |
| | | // else { |
| | | |
| | | // } |
| | | if (this.editConfig.title === "编辑") { |
| | | this.productTableList.tableData = this.editConfig.infomation.products |
| | | } |
| | | }, |
| | | watch: { |
| | | "editClientManageConfig.visible"(val) { |
| | | if (val) { |
| | | this.formInfo() |
| | | } |
| | | }, |
| | | } |
| | | }, |
| | | // beforeUpdate() { |
| | | // this.$refs.commonFormTableView.toggleSelection(this.tableData) |
| | | // }, |
| | | methods: { |
| | | ...mapActions(["getChanceFilter", "getSubunitFliter"]), |
| | | formInfo() { |
| | |
| | | saveClick(formName) { |
| | | this.$refs[formName].validate((valid) => { |
| | | if (valid) { |
| | | for (let i = 0; i < this.tableData.length; i++) { |
| | | if (this.tableData[i].name.length === 0) { |
| | | for (let i = 0; i < this.selProductData.length; i++) { |
| | | if (this.selProductData[i].name.length === 0) { |
| | | this.isNoProduct = true |
| | | break |
| | | } else { |
| | |
| | | } |
| | | } |
| | | if (this.isNoProduct) { |
| | | this.$message.error("产品名称不能为空") |
| | | this.$message.error("请选择产品") |
| | | } else { |
| | | const params = this.saveParams() |
| | | console.log(params) |
| | |
| | | } |
| | | }) |
| | | } else { |
| | | console.log(this.selProductData) |
| | | getUpdateSalesDetails(params).then((res) => { |
| | | console.log(res) |
| | | this.editConfig.visible = false |
| | |
| | | memberId: data.memberId || 0, |
| | | number: data.number || "", |
| | | phone: data.phone || "", |
| | | products: this.tableData, |
| | | products: this.selProductData, |
| | | remark: data.remark || "", |
| | | saleChanceId: this.saleChanceId || 0, |
| | | saleType: data.saleType || 0, |
| | |
| | | logisticCompany: data.logisticCompany || "", |
| | | logisticCost: data.logisticCost || 0, |
| | | logisticNumber: data.logisticNumber || "", |
| | | quotationId: this.quotationId, |
| | | deliverType: data.deliverType || 0 |
| | | } |
| | | let params = {} |
| | | if (this.editConfig.title === "新建") { |
| | |
| | | handleClose() { |
| | | this.editConfig.visible = false |
| | | }, |
| | | // 获取报价单 |
| | | getQuotation(id, value) { |
| | | getQuotationList({ |
| | | page: 0, |
| | | pageSize: 0, |
| | | search_map: { |
| | | sale_chance_id: id |
| | | } |
| | | }).then((res) => { |
| | | if (res.code == 200) { |
| | | console.log(res) |
| | | this.quotationList = res.data.list |
| | | if (value === "全部产品") { |
| | | this.quotationList.map((item) => { |
| | | if (item.id === this.editConfig.infomation.quotationId) { |
| | | this.tableData = item.products |
| | | this.tableData.map((item, index) => { |
| | | item.productId = index + 1 |
| | | this.selProductData.forEach((key) => { |
| | | if (item.number === key.number) { |
| | | item.amount = key.amount |
| | | item.id = key.id |
| | | } |
| | | }) |
| | | }) |
| | | this.productTableList.tableData = this.tableData |
| | | this.selProductData.forEach((key) => { |
| | | this.tableData.forEach((row) => { |
| | | if (key.number === row.number) { |
| | | this.$refs.commonFormTableView.$refs.fromTable.toggleRowSelection(row, true) |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | // 选择客户相关方法 |
| | | querySearchAsync(queryString, cb, value) { |
| | | var restaurants = [] |
| | |
| | | restaurants = this.saleChancelist |
| | | } else if (value === "subbill") { |
| | | restaurants = this.subOrderList |
| | | } else if (value === "quotation") { |
| | | restaurants = this.quotationList |
| | | } |
| | | var results = queryString ? restaurants.filter(this.createStateFilter(queryString, value)) : restaurants |
| | | cb(results) |
| | | }, |
| | | createStateFilter(queryString, value) { |
| | | return (state) => { |
| | | if (value === "subbill") { |
| | | if (value === "subbill" || value === "quotation") { |
| | | return state.number.toLowerCase().indexOf(queryString.toLowerCase()) === 0 |
| | | } else { |
| | | return state.name.toLowerCase().indexOf(queryString.toLowerCase()) === 0 |
| | |
| | | }, |
| | | handleSelectClient(value, item) { |
| | | if (value === "client") { |
| | | this.editConfig.infomation.subbill_name ="" |
| | | this.editConfig.infomation.sale_chance_name="" |
| | | this.editConfig.infomation.subbill_name = "" |
| | | this.editConfig.infomation.sale_chance_name = "" |
| | | this.clientId = item.id |
| | | this.editConfig.infomation.client_name = item.name |
| | | this.getSaleChanceList(item) |
| | |
| | | } else if (value === "chance") { |
| | | this.saleChanceId = item.id |
| | | this.editConfig.infomation.sale_chance_name = item.name |
| | | this.isAddQuatation = false |
| | | this.getQuotation(item.id) |
| | | } else if (value === "subbill") { |
| | | console.log("下拉框点击", item) |
| | | this.subbillId = item.id |
| | | this.editConfig.infomation.subbill_name = item.number |
| | | } else if (value === "quotation") { |
| | | this.productTableList.tableData = item.products |
| | | // this.tableData = item.products |
| | | this.editConfig.infomation.quotation_number = item.number |
| | | this.quotationId = item.id |
| | | } |
| | | }, |
| | | selClientClick(value) { |
| | |
| | | this.editSelCommonConfig.title = "销售子单" |
| | | this.editSelCommonConfig.editVisible = true |
| | | this.editSelCommonConfig.clientId = this.clientId |
| | | } else if (value === "quotation") { |
| | | this.editSelCommonConfig.title = "报价单" |
| | | this.editSelCommonConfig.editVisible = true |
| | | this.editSelCommonConfig.clientId = this.clientId |
| | | this.editSelCommonConfig.tableInfomation = [...this.quotationList] |
| | | } |
| | | }, |
| | | selClient(row, value) { |
| | | if (value === "client") { |
| | | this.editConfig.infomation.sale_chance_name="" |
| | | this.editConfig.infomation.subbill_name="" |
| | | this.editConfig.infomation.sale_chance_name = "" |
| | | this.editConfig.infomation.subbill_name = "" |
| | | this.editConfig.infomation.client_name = row.name |
| | | this.clientId = row.id |
| | | this.getSaleChanceList(row) |
| | |
| | | } else if (value === "chance") { |
| | | this.editConfig.infomation.sale_chance_name = row.name |
| | | this.saleChanceId = row.id |
| | | this.isAddQuatation = false |
| | | this.getQuotation(row.id) |
| | | } else if (value === "subbill") { |
| | | this.editConfig.infomation.subbill_name = row.number |
| | | this.subbillId = row.id |
| | | } else if (value === "quotation") { |
| | | this.productTableList.tableData = row.products |
| | | // this.tableData = row.products |
| | | this.editConfig.infomation.quotation_number = row.number |
| | | this.quotationId = row.id |
| | | } |
| | | }, |
| | | // 清除已选择用户 |
| | | clearupClient(value) { |
| | | if (value === "client") { |
| | | this.editConfig.infomation.sale_chance_name="" |
| | | this.editConfig.infomation.sale_chance_name = "" |
| | | this.editConfig.infomation.client_name = "" |
| | | this.editConfig.infomation.subbill_name ="" |
| | | this.editConfig.infomation.subbill_name = "" |
| | | this.editConfig.infomation.quotation_number = "" |
| | | this.quotationId = 0 |
| | | this.clientId = 0 |
| | | this.saleChanceId = 0 |
| | | this.subbillId = 0 |
| | | } else if (value === "chance") { |
| | | this.editConfig.infomation.sale_chance_name = "" |
| | | this.saleChanceId = 0 |
| | | this.isAddQuatation = true |
| | | this.editConfig.infomation.quotation_number = "" |
| | | this.quotationId = 0 |
| | | } else if (value === "subbill") { |
| | | this.editConfig.infomation.subbill_name = "" |
| | | this.subbillId = 0 |
| | | } else if (value === "quotation") { |
| | | this.editConfig.infomation.quotation_number = "" |
| | | this.quotationId = 0 |
| | | } |
| | | this.productTableList.tableData = [] |
| | | }, |
| | | // 添加附件 |
| | | addAnnexClick() {}, |
| | |
| | | setFormatClick() {}, |
| | | setTableForm() { |
| | | if (this.editConfig.title === "新建" || this.editConfig.infomation.products.length === 0) { |
| | | this.tableData = [ |
| | | { |
| | | productId: this.productId, |
| | | id: 0, |
| | | amount: 0, |
| | | desc: "", |
| | | name: "", |
| | | number: "", |
| | | price: 0, |
| | | total: 0 |
| | | } |
| | | ] |
| | | this.tableData = [] |
| | | } else { |
| | | this.tableData = this.editConfig.infomation.products |
| | | this.tableData.map((item, index) => { |
| | | item.productId = index + 1 |
| | | }) |
| | | this.selProductData = this.editConfig.infomation.products |
| | | this.getQuotation(this.editConfig.infomation.saleChanceId, "全部产品") |
| | | } |
| | | // let productData = this.quotationList.products |
| | | this.productTableList = { |
| | | tableData: this.tableData, |
| | | tableColumn: [ |
| | | { label: "#", prop: "productId", width: 40 }, |
| | | { label: "产品名称", prop: "name", productName: true, isRequird: true }, |
| | | { label: "产品名称", prop: "name", isRequird: true }, |
| | | { label: "产品编号", prop: "number" }, |
| | | { label: "数量", prop: "amount", inputNumber: true, isRequird: true }, |
| | | { label: "销售单价", prop: "price", inputFloat: true }, |
| | | { label: "价税合计", prop: "total", inputFloat: true } |
| | | { label: "销售单价", prop: "price" }, |
| | | { label: "价税合计", prop: "total" } |
| | | ] |
| | | } |
| | | }, |
| | |
| | | } |
| | | }) |
| | | }, |
| | | // 产品新增 |
| | | addProductClick() { |
| | | this.productId++ |
| | | this.tableData.push({ |
| | | productId: this.productId, |
| | | id: 0, |
| | | amount: 0, |
| | | desc: "", |
| | | name: "", |
| | | number: "", |
| | | price: 0, |
| | | total: 0 |
| | | }) |
| | | this.showSummary.show = true |
| | | }, |
| | | // 产品清空 |
| | | emptyProductClick() { |
| | | this.productId = 1 |
| | | this.tableData = [ |
| | | { |
| | | productId: this.productId, |
| | | id: 0, |
| | | amount: 0, |
| | | desc: "", |
| | | name: "", |
| | | number: "", |
| | | price: 0, |
| | | total: 0 |
| | | } |
| | | ] |
| | | this.productTableList.tableData = this.tableData |
| | | }, |
| | | // 产品重算 |
| | | recalculateProductClick() {}, |
| | | clearupProduct(data) { |
| | | this.tableData = data |
| | | this.productTableList.tableData = this.tableData |
| | | // 选择产品 |
| | | getSelectArray(val) { |
| | | this.selProductData = val |
| | | } |
| | | } |
| | | } |
| | |
| | | this.editConfig.infomation = { |
| | | ...this.addConfig, |
| | | currency: "人民币", |
| | | sale_chance_name:"", |
| | | subbill_name:"", |
| | | client_name: Object.keys(this.addConfig).length === 0 ? "" : this.addConfig.client_name |
| | | sale_chance_name: "", |
| | | subbill_name: "", |
| | | client_name: this.addConfig?.client_name ?? "", |
| | | quotation_number: "" |
| | | } |
| | | }, |
| | | // 编辑 |
| | |
| | | console.log(row) |
| | | this.editConfig.visible = true |
| | | this.editConfig.title = "编辑" |
| | | this.editConfig.infomation = { ...row, sale_chance_name: "", currency: "人民币",sale_chance_name:row.saleChance.name,} |
| | | this.editConfig.infomation = { |
| | | ...row, |
| | | currency: "人民币", |
| | | sale_chance_name: row.saleChance.name, |
| | | deliverType: row.deliverType === 0 ? "" : row.deliverType, |
| | | quotation_number: row.quotation.number |
| | | } |
| | | }, |
| | | // 删除 |
| | | delClick(rowID) { |
| | |
| | | <el-input |
| | | v-if=" |
| | | editConfig.title == '编辑' || |
| | | (editConfig.title == '新建' && |
| | | codenumer && |
| | | (explain != '' || isIdDisabled)) |
| | | (editConfig.title == '新建' && codenumer && (explain != '' || isIdDisabled)) |
| | | " |
| | | :disabled="editConfig.title == '编辑'" |
| | | v-model="editConfig.infomation.number" |
| | | placeholder="请输入编码" |
| | | > |
| | | </el-input> |
| | | <span v-else-if="editConfig.title == '新建'" style="color: #f56c6c" |
| | | <span v-else-if="editConfig.title == '新建'" style="color: #f56c6c" |
| | | >请优先配置编码规范 <el-button type="text" @click="numberClick"> 配置规范 </el-button></span |
| | | > |
| | | <!-- <WordInput |
| | |
| | | </div> |
| | | <div class="product-view"> |
| | | <CommonFormTableView |
| | | ref="commonFormTableView" |
| | | :detail-enter="true" |
| | | :select-box="true" |
| | | :show-summary="showSummary" |
| | | :product-table-list="productTableList" |
| | | @inputContent="inputContent" |
| | | @addProductClick="addProductClick" |
| | | @emptyProductClick="emptyProductClick" |
| | | @recalculateProductClick="recalculateProductClick" |
| | | @clearupProduct="clearupProduct" |
| | | @getSelectArray="getSelectArray" |
| | | /> |
| | | </div> |
| | | </div> |
| | |
| | | import SelectCommonDialog from "@/views/other/commonDialog/SelectCommonDialog" |
| | | import codeMixin from "@/components/makepager/mixin/codeMixin" |
| | | import { getSalesDetailsList } from "@/api/sales/salesDetails" |
| | | import { mapActions } from "vuex" |
| | | // import { mapActions } from "vuex" |
| | | |
| | | export default { |
| | | name: "AddSalesReturnDialog", |
| | |
| | | computed: { |
| | | clientList() { |
| | | return this.$store.state.getClientName.clientList |
| | | }, |
| | | salesDetailsList() { |
| | | return this.$store.state.getClientName.salesDetailsList |
| | | } |
| | | // salesDetailsList() { |
| | | // return this.$store.state.getClientName.salesDetailsList |
| | | // } |
| | | }, |
| | | data() { |
| | | return { |
| | | dialogWidth: "50%", |
| | | editConfig: this.editCommonConfig, |
| | | rules: { |
| | | number: [{ required: true, validator: this.validateCheckCode, trigger:["blur",'change']}], |
| | | number: [{ required: true, validator: this.validateCheckCode, trigger: ["blur", "change"] }], |
| | | repository: [{ required: true, message: "请选择退入仓库", trigger: "change" }], |
| | | memberId: [{ required: true, message: "请选择负责人", trigger: "change" }], |
| | | salesDetailNumber: [{ required: true, message: "请选择销售明细单", trigger: "change" }] |
| | |
| | | productId: 1, |
| | | isNoProduct: true, |
| | | clientId: this.editCommonConfig.infomation.clientId, |
| | | SalesDetailsId: this.editCommonConfig.infomation.SalesDetailsId |
| | | SalesDetailsId: this.editCommonConfig.infomation.SalesDetailsId, |
| | | tableData: [], |
| | | selProductData: [], |
| | | salesDetailsList: [] |
| | | } |
| | | }, |
| | | created() { |
| | | this.$store.dispatch("geClient") |
| | | this.$store.dispatch("geSalesDetails") |
| | | // this.$store.dispatch("geSalesDetails") |
| | | this.setTableForm() |
| | | this.getCommonData() |
| | | // this.getProductList() |
| | |
| | | if (val) { |
| | | this.formInfo() |
| | | } |
| | | }, |
| | | } |
| | | }, |
| | | methods: { |
| | | ...mapActions(["getSalesDetailsFliter"]), |
| | | // ...mapActions(["getSalesDetailsFliter"]), |
| | | formInfo() { |
| | | this.objCode.type = "销售退货编码" |
| | | this.objCode.codeStandID = "" |
| | |
| | | this.$refs[formName].validate((valid) => { |
| | | if (valid) { |
| | | console.log(this.editConfig.infomation) |
| | | // for (let i = 0; i < this.tableData.length; i++) { |
| | | // if (this.tableData[i].name.length === 0) { |
| | | // this.isNoProduct = true |
| | | // break |
| | | // } else { |
| | | // this.isNoProduct = false |
| | | // } |
| | | // } |
| | | // if (this.isNoProduct) { |
| | | // this.$message.error("产品名称不能为空") |
| | | // } else { |
| | | const params = this.saveParams() |
| | | if (this.editConfig.title === "新建") { |
| | | getAddSalesReturn(params).then((res) => { |
| | | console.log(res) |
| | | this.editConfig.visible = false |
| | | if (res.code === 200) { |
| | | this.$message.success("添加成功") |
| | | this.$parent.getData() |
| | | } |
| | | }) |
| | | } else { |
| | | getUpdateSalesReturn(params).then((res) => { |
| | | console.log(res) |
| | | this.editConfig.visible = false |
| | | if (res.code === 200) { |
| | | this.$message.success("编辑成功") |
| | | this.$parent.getData() |
| | | } |
| | | }) |
| | | for (let i = 0; i < this.selProductData.length; i++) { |
| | | if (this.selProductData[i].name.length === 0) { |
| | | this.isNoProduct = true |
| | | break |
| | | } else { |
| | | this.isNoProduct = false |
| | | } |
| | | } |
| | | if (this.isNoProduct) { |
| | | this.$message.error("请选择产品") |
| | | } else { |
| | | const params = this.saveParams() |
| | | console.log(params) |
| | | if (this.editConfig.title === "新建") { |
| | | getAddSalesReturn(params).then((res) => { |
| | | console.log(res) |
| | | this.editConfig.visible = false |
| | | if (res.code === 200) { |
| | | this.$message.success("添加成功") |
| | | this.$parent.getData() |
| | | } |
| | | }) |
| | | } else { |
| | | getUpdateSalesReturn(params).then((res) => { |
| | | console.log(res) |
| | | this.editConfig.visible = false |
| | | if (res.code === 200) { |
| | | this.$message.success("编辑成功") |
| | | this.$parent.getData() |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } else { |
| | | console.log("error submit") |
| | | return false |
| | | } |
| | | // } else { |
| | | // console.log("error submit") |
| | | // return false |
| | | // } |
| | | }) |
| | | }, |
| | | saveParams() { |
| | |
| | | clientId: this.clientId || 0, |
| | | memberId: data.memberId || 0, |
| | | number: data.number || "", |
| | | products: this.tableData, |
| | | products: this.selProductData, |
| | | reason: data.reason || "", |
| | | repository: data.repository || "", |
| | | returnDate: data.returnDate || "", |
| | | salesReturnStatusId: data.salesReturnStatusId || 0, |
| | | sourceId: this.SalesDetailsId, |
| | | sourceType: 1, |
| | | sourceType: 1 |
| | | } |
| | | } |
| | | return params |
| | | }, |
| | | handleClose() { |
| | | this.editConfig.visible = false |
| | | }, |
| | | // 获取销售明细 |
| | | async getSalesDetailsList(id, value) { |
| | | await getSalesDetailsList({ |
| | | clientId: id |
| | | }).then((res) => { |
| | | if (res.code == 200) { |
| | | this.salesDetailsList = res.data.list |
| | | if (value === "全部产品") { |
| | | this.salesDetailsList.map((item) => { |
| | | if (item.id === this.editConfig.infomation.sourceId) { |
| | | this.tableData = item.products |
| | | this.tableData.map((item, index) => { |
| | | item.productId = index + 1 |
| | | this.selProductData.forEach((key) => { |
| | | if (item.number === key.number) { |
| | | item.amount = key.amount |
| | | item.id = key.id |
| | | } |
| | | }) |
| | | }) |
| | | this.productTableList.tableData = this.tableData |
| | | this.selProductData.forEach((key) => { |
| | | this.tableData.forEach((row) => { |
| | | if (key.number === row.number) { |
| | | this.$refs.commonFormTableView.$refs.fromTable.toggleRowSelection(row, true) |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | // 选择用户相关方法 |
| | | querySearchAsync(queryString, cb, value) { |
| | |
| | | this.editConfig.infomation.salesDetailNumber = "" |
| | | this.clientId = item.id |
| | | this.editSelCommonConfig.clientId = item.id |
| | | await getSalesDetailsList({ |
| | | clientId: this.clientId |
| | | }).then((res) => { |
| | | this.getSalesDetailsFliter(res.data.list) |
| | | }) |
| | | this.getSalesDetailsList(item.id) |
| | | } else if (value === "contract") { |
| | | this.productTableList.tableData = item.products |
| | | this.tableData = item.products |
| | | this.SalesDetailsId = item.id |
| | | } |
| | | }, |
| | |
| | | } else if (value === "contract") { |
| | | this.editSelCommonConfig.title = "销售明细单" |
| | | this.editSelCommonConfig.editVisible = true |
| | | this.editSelCommonConfig.clientId = this.clientId |
| | | // this.editSelCommonConfig.salesDetailNumber = this.editConfig.infomation.salesDetailNumber |
| | | } |
| | | }, |
| | |
| | | this.editConfig.infomation.client_name = row.name |
| | | this.clientId = row.id |
| | | this.editSelCommonConfig.clientId = row.id |
| | | await getSalesDetailsList({ |
| | | clientId: row.id |
| | | }).then((res) => { |
| | | this.getSalesDetailsFliter(res.data.list) |
| | | }) |
| | | this.getSalesDetailsList(row.id) |
| | | } else if (value === "contract") { |
| | | this.editConfig.infomation.salesDetailNumber = row.number |
| | | this.SalesDetailsId = row.id |
| | | this.productTableList.tableData = row.products |
| | | this.tableData = row.products |
| | | } |
| | | }, |
| | | // 清除已选择用户 |
| | |
| | | this.editConfig.infomation.salesDetailNumber = "" |
| | | this.editConfig.infomation.client_name = "" |
| | | this.clientId = 0 |
| | | this.productTableList.tableData = [] |
| | | } else if (value === "contract") { |
| | | this.editConfig.infomation.salesDetailNumber = "" |
| | | this.productTableList.tableData = [] |
| | | } |
| | | }, |
| | | // 添加附件 |
| | |
| | | setFormatClick() {}, |
| | | setTableForm() { |
| | | if (this.editConfig.title === "新建" || this.editConfig.infomation.products.length === 0) { |
| | | this.tableData = [ |
| | | { |
| | | productId: this.productId, |
| | | id: 0, |
| | | amount: 0, |
| | | desc: "", |
| | | name: "", |
| | | number: "", |
| | | price: 0, |
| | | total: 0 |
| | | } |
| | | ] |
| | | this.tableData = [] |
| | | } else { |
| | | this.tableData = this.editConfig.infomation.products |
| | | this.tableData.map((item, index) => { |
| | | item.productId = index + 1 |
| | | }) |
| | | this.selProductData = this.editConfig.infomation.products |
| | | this.getSalesDetailsList(this.editConfig.infomation.clientId, "全部产品") |
| | | } |
| | | console.log(this.tableData) |
| | | this.productTableList = { |
| | | tableData: this.tableData, |
| | | tableColumn: [ |
| | |
| | | } |
| | | }) |
| | | }, |
| | | // 产品新增 |
| | | addProductClick() { |
| | | this.productId++ |
| | | this.tableData.push({ |
| | | productId: this.productId, |
| | | id: 0, |
| | | amount: 0, |
| | | desc: "", |
| | | name: "", |
| | | number: "", |
| | | price: 0, |
| | | total: 0 |
| | | }) |
| | | this.showSummary.show = true |
| | | }, |
| | | // 产品清空 |
| | | emptyProductClick() { |
| | | this.productId = 1 |
| | | this.tableData = [ |
| | | { |
| | | productId: this.productId, |
| | | id: 0, |
| | | amount: 0, |
| | | desc: "", |
| | | name: "", |
| | | number: "", |
| | | price: 0, |
| | | total: 0 |
| | | } |
| | | ] |
| | | this.productTableList.tableData = this.tableData |
| | | }, |
| | | // 产品重算 |
| | | recalculateProductClick() {}, |
| | | clearupProduct(data) { |
| | | this.tableData = data |
| | | this.productTableList.tableData = this.tableData |
| | | // 选择产品 |
| | | getSelectArray(val) { |
| | | console.log(val, "cccccccccccccccccc") |
| | | this.selProductData = val |
| | | } |
| | | } |
| | | } |
| | |
| | | { label: "销售负责人", prop: "member_name" } |
| | | // { label: "修改时间", prop: "modifyTime", isTime: true, min: 130 } |
| | | ], |
| | | showCol: ["销售退货单编号", "客户名称", "退货日期", "状态", "退入仓库", "应退款", "已退款", "销售负责人"] |
| | | showCol: ["销售退货单编号", "客户名称", "退货日期", "状态", "退入仓库", "应退款", "已退款", "销售负责人"], |
| | | products: [] |
| | | } |
| | | }, |
| | | created() { |
| | |
| | | addBtnClick() { |
| | | this.editConfig.visible = true |
| | | this.editConfig.title = "新建" |
| | | this.editConfig.infomation = { currency: "人民币",salesDetailNumber:"",client_name:""} |
| | | this.editConfig.infomation = { currency: "人民币", salesDetailNumber: "", client_name: "" } |
| | | }, |
| | | // 编辑 |
| | | handleClick(row) { |
| | |
| | | const path = require("path") |
| | | // 基础路径 注意发布之前要先修改这里 |
| | | const publicPath = "/" |
| | | const publicPath = process.env.VUE_APP_PUBLIC_PATH || "/" |
| | | function resolve(dir) { |
| | | return path.join(__dirname, dir) |
| | | } |
| | |
| | | // target: "http://192.168.20.118:8002", |
| | | ws: true, |
| | | changeOrigin: true |
| | | }, |
| | | } |
| | | } |
| | | }, |
| | | transpileDependencies: [ |
| | |
| | | configNew.externals = externals |
| | | configNew.plugins = [] |
| | | } else if (process.env.NODE_ENV === "development") { |
| | | // console.log("development", config) |
| | | console.log("development", config) |
| | | } |
| | | return configNew |
| | | }, |