| | |
| | | <template> |
| | | <div class="page-view"> |
| | | <el-form ref="form" :model="productTableList" :show-message="false" label-position="right"> |
| | | <el-form ref="form" :model="tableList" :show-message="false" label-position="right"> |
| | | <el-table |
| | | :data="productTableList.tableData" |
| | | :data="tableList.tableData" |
| | | :show-summary="showSummary.show" |
| | | :summary-method="getSummaries" |
| | | :span-method="arraySpanMethod" |
| | | style="width: 100%" |
| | | > |
| | | <el-table-column |
| | | v-for="(item, i) in productTableList.tableColumn" |
| | | v-for="(item, i) in tableList.tableColumn" |
| | | :key="i" |
| | | :prop="item.prop" |
| | | :label="item.label" |
| | |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item |
| | | v-else-if="item.productName" |
| | | label=" " |
| | | :prop="'tableData.' + scope.$index + '.' + item.prop" |
| | | :rules="[{ required: item.isRequird ? true : false, message: '产品名称不能为空' }]" |
| | | > |
| | | <div class="custom-name"> |
| | | <el-autocomplete |
| | | v-model="scope.row[item.prop]" |
| | | :fetch-suggestions="querySearchAsync" |
| | | value-key="name" |
| | | size="mini" |
| | | @select=" |
| | | (val) => { |
| | | handleSelectClient(val, item.prop, scope.row) |
| | | } |
| | | " |
| | | ></el-autocomplete> |
| | | <div class="common-select-btn" @click="selClientClick(scope.row, item.prop)"> |
| | | <i class="el-icon-circle-plus-outline" title="选择"></i> |
| | | </div> |
| | | <div class="common-select-btn" @click="clearupClient(scope.row)"> |
| | | <i class="el-icon-edit-outline" title="清除"></i> |
| | | </div> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item |
| | | v-else-if="item.date" |
| | | label=" " |
| | | :prop="'tableData.' + scope.$index + '.' + item.prop" |
| | |
| | | <!-- <el-input v-model.trim="scope.row[item.prop]" maxlength="50" size="mini"></el-input> --> |
| | | <el-date-picker v-model="scope.row[item.prop]" type="date" size="mini" style="width: 110px"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item |
| | | v-else-if="item.inputNumber" |
| | | 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> |
| | | <el-form-item |
| | | v-else-if="item.inputFloat" |
| | | 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" |
| | | :precision="2" |
| | | :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>{{ scope.row[item.prop] }}</span> |
| | | </template> |
| | |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <!-- 合同订单 --> |
| | | <SelectCommonDialog |
| | | v-if="editSelCommonConfig.editVisible" |
| | | :edit-common-config="editSelCommonConfig" |
| | | @selClient="selClient" |
| | | /> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getProductList } from "@/api/common/other" |
| | | import SelectCommonDialog from "@/views/other/commonDialog/SelectCommonDialog" |
| | | export default { |
| | | name: "CommmonFormTableView", |
| | | components: { SelectCommonDialog }, |
| | | props: { |
| | | detailEnter: { |
| | | type: Boolean, |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | total: 0 |
| | | total: 0, |
| | | productList: [], |
| | | tableList: [], |
| | | editSelCommonConfig: { |
| | | editVisible: false, |
| | | title: "", |
| | | infomation: {} |
| | | }, |
| | | productIndex: 0 |
| | | } |
| | | }, |
| | | created() { |
| | | this.getProductList() |
| | | this.tableList = this.productTableList |
| | | }, |
| | | computed: {}, |
| | | methods: { |
| | | // 产品名称 |
| | | async getProductList() { |
| | | await getProductList({ |
| | | productName: "", |
| | | productNumber: "", |
| | | page: 1, |
| | | pageSize: 5 |
| | | }).then((res) => { |
| | | console.log(res.data) |
| | | if (res.data.code === 200) { |
| | | if (res.data.data.data && res.data.data.data.length > 0) { |
| | | this.productList = res.data.data.data |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | handleReserve(row) { |
| | | return row._id ? row._id : row.id |
| | | }, |
| | |
| | | }, |
| | | // 合计 |
| | | getSummaries(param) { |
| | | if (this.showSummary.show) { |
| | | const { columns, data } = param |
| | | const sums = [] |
| | | columns.forEach((column, index) => { |
| | | if (index === this.showSummary.mergeNumber) { |
| | | sums[index] = "小计" |
| | | } |
| | | const values = data.map((item) => Number(item[column.property])) |
| | | // if (column.property === this.showSummary.sumProp) { |
| | | if (this.showSummary.sumProp.includes(column.property)) { |
| | | sums[index] = values.reduce((prev, curr) => { |
| | | const value = Number(curr) |
| | | if (!isNaN(value)) { |
| | | return this.number_format(prev + curr, 2, ".", ",") |
| | | } else { |
| | | return this.number_format(prev, 2, ".", ",") |
| | | } |
| | | }, 0) |
| | | if (column.property === "total") { |
| | | this.total = sums[index] |
| | | const { columns, data } = param |
| | | const sums = [] |
| | | columns.forEach((column, index) => { |
| | | // // 更改行名称 |
| | | if (index === this.showSummary.mergeNumber) { |
| | | sums[index] = "小计:" |
| | | return |
| | | } |
| | | const title = ["#"] |
| | | // 去除某些不需要计算的数据 |
| | | if (title.includes(column.label)) { |
| | | sums[index] = "" |
| | | return |
| | | } |
| | | // 把当前表格数据中同个分类的数据收集起来 |
| | | const values = data.map((item) => Number(item[column.property])) |
| | | // 过滤掉 |
| | | if (!values.every((value) => Number.isNaN(value))) { |
| | | sums[index] = ` ${values.reduce((prev, curr) => { |
| | | const value = Number(curr) |
| | | if (!Number.isNaN(value)) { |
| | | const num = prev + curr |
| | | return Number(num.toFixed(2)) |
| | | } else { |
| | | return Number(prev.toFixed(2)) |
| | | } |
| | | sums[index] |
| | | } |
| | | }) |
| | | return sums |
| | | } |
| | | }, 0)}` |
| | | } else { |
| | | sums[index] = "" |
| | | } |
| | | if (column.property === "total") { |
| | | this.total = sums[index] |
| | | } |
| | | }) |
| | | return sums |
| | | }, |
| | | // 数字换行为金额显示格式 |
| | | number_format(number, decimals, dec_point, thousands_sep) { |
| | |
| | | this.$emit("recalculateProductClick") |
| | | }) |
| | | .catch(() => {}) |
| | | }, |
| | | // 选择产品名称相关方法 |
| | | querySearchAsync(queryString, cb) { |
| | | var restaurants = this.productList |
| | | var results = queryString ? restaurants.filter(this.createStateFilter(queryString)) : restaurants |
| | | cb(results) |
| | | }, |
| | | createStateFilter(queryString) { |
| | | return (state) => { |
| | | return state.name.toLowerCase().indexOf(queryString.toLowerCase()) === 0 |
| | | } |
| | | }, |
| | | handleSelectClient(item, prop, row) { |
| | | // this.clientId = item.id |
| | | console.log(item, prop, row) |
| | | this.tableList.tableData.map((ite) => { |
| | | if (ite.name === item.name) { |
| | | ite.amount = item.amount || 1 |
| | | ite.number = item.number |
| | | ite.price = item.price |
| | | ite.total = item.amount ? item.amount * item.price : 1 * item.price |
| | | } |
| | | }) |
| | | }, |
| | | selClientClick(row, prop) { |
| | | console.log(row, prop) |
| | | this.productIndex = row.productId - 1 |
| | | this.editSelCommonConfig.title = "产品名称" |
| | | this.editSelCommonConfig.editVisible = true |
| | | }, |
| | | selClient(item) { |
| | | console.log(item) |
| | | console.log(this.tableList.tableData) |
| | | // this.editConfig.infomation.client_name = row.name |
| | | this.tableList.tableData.map((ite, index) => { |
| | | if (index === this.productIndex) { |
| | | ite.name = item.name |
| | | ite.amount = item.amount || 1 |
| | | ite.number = item.number |
| | | ite.price = item.price |
| | | ite.total = item.amount ? item.amount * item.price : 1 * item.price |
| | | } |
| | | }) |
| | | }, |
| | | // 清除已选择用户 |
| | | clearupClient(row) { |
| | | this.productIndex = row.productId - 1 |
| | | this.tableList.tableData.map((ite, index) => { |
| | | if (index === this.productIndex) { |
| | | ite.name = "" |
| | | ite.amount = 1 |
| | | ite.number = "" |
| | | ite.price = 0 |
| | | ite.total = 0 |
| | | } |
| | | }) |
| | | this.$emit("clearupProduct", this.tableList.tableData) |
| | | } |
| | | } |
| | | } |
| | |
| | | .page-view { |
| | | .el-form-item { |
| | | margin-bottom: 0; |
| | | .custom-name { |
| | | display: flex; |
| | | .common-select-btn { |
| | | margin-left: 5px; |
| | | font-size: 18px; |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | ::v-deep { |
| | |
| | | .el-table th.el-table__cell > .cell { |
| | | padding: 0 5px; |
| | | } |
| | | .el-input__inner { |
| | | text-align: left; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | </ul> |
| | | <div v-else class="no-product">{{ "--" }}</div> |
| | | </div> |
| | | <div v-else-if="item.isProductCommon" class="product-view"> |
| | | <ul v-if="scope.row.products && scope.row.products.length > 0"> |
| | | <li v-for="(item, index) in scope.row.products" :key="index"> |
| | | <div :class="scope.row.products.length === 1 ? 'name-view no-bottom' : 'name-view'"> |
| | | {{ item.prop === "price" ? item.price : item.total }} |
| | | </div> |
| | | </li> |
| | | </ul> |
| | | <div v-else class="no-product">{{ "--" }}</div> |
| | | </div> |
| | | <span v-else>{{ scope.row[item.prop] ? scope.row[item.prop] : "--" }}</span> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | leftStr: "所属公海", |
| | | leftValue: "", |
| | | rightStr: "下次回访日期", |
| | | rightValue: this.processTime(item.next_visit_time) |
| | | rightValue: item.next_visit_time |
| | | }, |
| | | { |
| | | leftStr: "最晚服务到期日", |
| | | leftValue: this.processTime(item.latest_service_time), |
| | | leftValue: item.latest_service_time, |
| | | rightStr: "创建时间", |
| | | rightValue: "" |
| | | }, |
| | |
| | | }, |
| | | { |
| | | leftStr: "注册时间", |
| | | leftValue: this.processTime(item.registration_time), |
| | | leftValue: item.registration_time, |
| | | rightStr: "注册资金", |
| | | rightValue: item.RegisteredCapital.name |
| | | }, |
| | |
| | | } else if (value === "annex") { |
| | | this.isAnnexExpand = !this.isAnnexExpand |
| | | } |
| | | }, |
| | | // 处理时间 |
| | | processTime(dateTime) { |
| | | return this.dateFormat("YYYY-mm-dd HH:MM:SS", dateTime) === "1900-01-01 08:00:00" |
| | | ? "--" |
| | | : this.dateFormat("YYYY-mm-dd HH:MM:SS", dateTime) |
| | | }, |
| | | // 时间显示 |
| | | dateFormat(fmt, date) { |
| | |
| | | }, |
| | | { |
| | | leftStr: "下次回访日期", |
| | | leftValue: "", |
| | | leftValue: item.Client.next_visit_time, |
| | | rightStr: "最新联系日期", |
| | | rightValue: "" |
| | | }, |
| | |
| | | { label: "联系人姓名", prop: "contact_name", min: 100, isContactClick: true }, // 联系人姓名 |
| | | { label: "客户状态", prop: "client_status", min: 100 }, // 客户状态 |
| | | { label: "联系方式", prop: "contact_information_name", min: 100 }, // 联系方式 |
| | | { label: "联系人日期", prop: "follow_time", min: 130 }, // 联系人日期 |
| | | { label: "联系日期", prop: "follow_time", min: 130 }, // 联系人日期 |
| | | { label: "下次回访日期", prop: "next_follow_time", min: 130 }, // 下次回访日期 |
| | | { label: "负责人", prop: "member_name", min: 110 }, // 负责人 |
| | | { label: "跟进记录", prop: "record", min: 130 } // 跟进记录 |
| | |
| | | </div> |
| | | </li> |
| | | </ul> |
| | | <div class="business_scope"> |
| | | <div class="content-title">{{ "最新进展" }}</div> |
| | | <div class="content-data">{{ record ? record : "--" }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- 地址信息 --> |
| | |
| | | addressInfoList: [], |
| | | isRemarkExpand: true, // 备注信息 |
| | | remarkInfoList: [], |
| | | addConfig: {} |
| | | addConfig: {}, |
| | | record: "" |
| | | } |
| | | }, |
| | | created() { |
| | | this.setData() |
| | | this.setData(this.detailConfig.infomation) |
| | | this.addConfig = { |
| | | id_name: "sales_leads_id", |
| | | id: this.detailConfig.infomation.id, |
| | |
| | | }, |
| | | mounted() {}, |
| | | methods: { |
| | | setData() { |
| | | setData(item) { |
| | | if (item.FollowRecord && item.FollowRecord.length > 0) { |
| | | this.record = item.FollowRecord[0].record |
| | | } |
| | | this.basicInfoList = [ |
| | | { |
| | | leftStr: "客户名称", |
| | | leftValue: this.detailConfig.infomation.name, |
| | | leftValue: item.name, |
| | | rightStr: "销售线索编号", |
| | | rightValue: this.detailConfig.infomation.number |
| | | rightValue: item.number |
| | | }, |
| | | { |
| | | leftStr: "联系人姓名", |
| | | leftValue: this.detailConfig.infomation.contact_name, |
| | | leftValue: item.contact_name, |
| | | rightStr: "联系人职务", |
| | | rightValue: this.detailConfig.infomation.contact_position |
| | | rightValue: item.contact_position |
| | | }, |
| | | { |
| | | leftStr: "手机号码", |
| | | leftValue: this.detailConfig.infomation.contact_phone, |
| | | leftValue: item.contact_phone, |
| | | rightStr: "商机状态", |
| | | rightValue: "新建" |
| | | }, |
| | | { |
| | | leftStr: "商机来源", |
| | | leftValue: this.detailConfig.infomation.sales_resources, |
| | | leftValue: item.sales_resources, |
| | | rightStr: "负责人", |
| | | rightValue: this.detailConfig.infomation.member_name |
| | | rightValue: item.member_name |
| | | }, |
| | | { |
| | | leftStr: "分配日期", |
| | |
| | | { |
| | | leftStr: "未联系天数", |
| | | leftValue: "", |
| | | rightStr: "最新推进时间", |
| | | rightStr: "最新联系日期", |
| | | rightValue: "" |
| | | }, |
| | | { |
| | | leftStr: "最新进展", |
| | | leftValue: "", |
| | | rightStr: "最新联系日期", |
| | | leftValue: this.record, |
| | | rightStr: "", |
| | | rightValue: "" |
| | | } |
| | | ] |
| | |
| | | leftStr: "国家", |
| | | leftValue: "中国", |
| | | rightStr: "省份", |
| | | rightValue: this.detailConfig.infomation.Province.name |
| | | rightValue: item.Province.name |
| | | }, |
| | | { |
| | | leftStr: "城市", |
| | | leftValue: this.detailConfig.infomation.City.name, |
| | | leftValue: item.City.name, |
| | | rightStr: "", |
| | | rightValue: "" |
| | | } |
| | |
| | | width: 100%; |
| | | } |
| | | } |
| | | .business_scope { |
| | | display: flex; |
| | | align-items: center; |
| | | font-size: 14px; |
| | | min-height: 40px; |
| | | .content-title { |
| | | width: 320px; |
| | | text-align: right; |
| | | color: #555; |
| | | } |
| | | .content-data { |
| | | flex: 1; |
| | | padding: 5px; |
| | | text-align: left; |
| | | margin-left: 25px; |
| | | color: #333; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | this.tableList = { |
| | | tableInfomation: [], |
| | | tableColumn: [ |
| | | { label: "产品名称", prop: "Name", isClick: true }, |
| | | { label: "产品编号", prop: "Number" }, |
| | | { label: "规格型号", prop: "MaterialMode" } |
| | | { label: "产品名称", prop: "name", isClick: true }, |
| | | { label: "产品编号", prop: "number" } |
| | | ] |
| | | } |
| | | this.searchSel = { value: "Name", label: "产品名称" } |
| | |
| | | <div class="collection-view"> |
| | | <div class="label">收款计划类型</div> |
| | | <el-select v-model="editConfig.infomation.collectionType" size="mini"> |
| | | <el-option label="计划收款日期" value="1"></el-option> |
| | | <el-option label="项目状态" value="2"></el-option> |
| | | <el-option label="计划收款日期" :value="1"></el-option> |
| | | <el-option label="项目状态" :value="2"></el-option> |
| | | </el-select> |
| | | </div> |
| | | <div class="collection-view"> |
| | |
| | | sourceId: this.editCommonConfig.infomation.id, |
| | | principalId: 0, |
| | | planAmount: 0, // 计划金额 |
| | | firstDate: this.getCurrentDate(1) |
| | | firstDate: this.getCurrentDate(1), |
| | | collectionType: 1, |
| | | tableInfomation: [] |
| | | } |
| | | }, |
| | | created() { |
| | | console.log(this.editCommonConfig.sourceType) |
| | | console.log(this.editCommonConfig) |
| | | this.setData() |
| | | this.setTableForm() |
| | | this.getCommonData() |
| | |
| | | // 设置初始值 |
| | | setData() { |
| | | this.editConfig.infomation = { |
| | | collectionType: "1", |
| | | collectionType: this.collectionType, |
| | | moneyType: "人民币", |
| | | amount: this.amount.toFixed(2) |
| | | } |
| | |
| | | this.editConfig.visible = false |
| | | }, |
| | | setTableForm() { |
| | | this.setTableInfomation(this.firstDate) |
| | | this.tableData = { |
| | | tableInfomation: [ |
| | | { |
| | | amount: this.amount, |
| | | amountReceivable: this.amount * 0.3, |
| | | amountReceived: 0, |
| | | amountTotal: 0, |
| | | collectionDate: this.getCurrentDate(1), |
| | | collectionType: 0, |
| | | fileId: 0, |
| | | id: 0, |
| | | moneyType: "人民币", |
| | | percent: 30, |
| | | principalId: this.principalId, |
| | | remark: "", |
| | | sourceId: this.sourceId, |
| | | sourceType: this.sourceType, |
| | | status: 1, |
| | | term: 1 |
| | | }, |
| | | { |
| | | amount: this.amount, |
| | | amountReceivable: this.amount * 0.5, |
| | | amountReceived: 0, |
| | | amountTotal: 0, |
| | | collectionDate: this.getCurrentDate(2), |
| | | collectionType: 0, |
| | | fileId: 0, |
| | | id: 0, |
| | | moneyType: "人民币", |
| | | percent: 50, |
| | | principalId: this.principalId, |
| | | remark: "", |
| | | sourceId: this.sourceId, |
| | | sourceType: this.sourceType, |
| | | status: 1, |
| | | term: 2 |
| | | }, |
| | | { |
| | | amount: this.amount, |
| | | amountReceivable: this.amount * 0.2, |
| | | amountReceived: 0, |
| | | amountTotal: 0, |
| | | collectionDate: this.getCurrentDate(3), |
| | | collectionType: 0, |
| | | fileId: 0, |
| | | id: 0, |
| | | moneyType: "人民币", |
| | | percent: 20, |
| | | principalId: this.principalId, |
| | | remark: "", |
| | | sourceId: this.sourceId, |
| | | sourceType: this.sourceType, |
| | | status: 1, |
| | | term: 3 |
| | | } |
| | | ], |
| | | tableInfomation: this.tableInfomation, |
| | | tableColumn: [ |
| | | { label: "操作", prop: "operate", width: 60 }, |
| | | { label: "期次", prop: "term", inputNumber: true, width: 90 }, |
| | |
| | | { label: "备注", prop: "remark", input: true } |
| | | ] |
| | | } |
| | | }, |
| | | setTableInfomation(date) { |
| | | console.log(this.sourceId) |
| | | this.tableInfomation = [ |
| | | { |
| | | amount: this.amount, |
| | | amountReceivable: this.amount * 0.3, |
| | | amountReceived: 0, |
| | | amountTotal: 0, |
| | | collectionDate: this.setDate(date, 0), |
| | | collectionType: this.editConfig.infomation.collectionType, |
| | | fileId: 0, |
| | | id: 0, |
| | | moneyType: "人民币", |
| | | percent: 30, |
| | | principalId: this.principalId, |
| | | remark: "", |
| | | sourceId: this.sourceId, |
| | | sourceType: this.sourceType, |
| | | status: 1, |
| | | term: 1 |
| | | }, |
| | | { |
| | | amount: this.amount, |
| | | amountReceivable: this.amount * 0.5, |
| | | amountReceived: 0, |
| | | amountTotal: 0, |
| | | collectionDate: this.setDate(date, 1), |
| | | collectionType: this.editConfig.infomation.collectionType, |
| | | fileId: 0, |
| | | id: 0, |
| | | moneyType: "人民币", |
| | | percent: 50, |
| | | principalId: this.principalId, |
| | | remark: "", |
| | | sourceId: this.sourceId, |
| | | sourceType: this.sourceType, |
| | | status: 1, |
| | | term: 2 |
| | | }, |
| | | { |
| | | amount: this.amount, |
| | | amountReceivable: this.amount * 0.2, |
| | | amountReceived: 0, |
| | | amountTotal: 0, |
| | | collectionDate: this.setDate(date, 2), |
| | | collectionType: this.editConfig.infomation.collectionType, |
| | | fileId: 0, |
| | | id: 0, |
| | | moneyType: "人民币", |
| | | percent: 20, |
| | | principalId: this.principalId, |
| | | remark: "", |
| | | sourceId: this.sourceId, |
| | | sourceType: this.sourceType, |
| | | status: 1, |
| | | term: 3 |
| | | } |
| | | ] |
| | | }, |
| | | // 重算 |
| | | recalculateClick() { |
| | |
| | | amountReceived: 0, |
| | | amountTotal: 0, |
| | | collectionDate: this.setDate(this.firstDate, 0), |
| | | collectionType: 0, |
| | | collectionType: this.editConfig.infomation.collectionType, |
| | | fileId: 0, |
| | | id: 0, |
| | | moneyType: "人民币", |
| | |
| | | amountReceived: 0, |
| | | amountTotal: 0, |
| | | collectionDate: this.setDate(this.firstDate, 0), |
| | | collectionType: 0, |
| | | collectionType: this.editConfig.infomation.collectionType, |
| | | fileId: 0, |
| | | id: 0, |
| | | moneyType: "人民币", |
| | |
| | | amountReceived: 0, |
| | | amountTotal: 0, |
| | | collectionDate: this.setDate(this.firstDate, 1), |
| | | collectionType: 0, |
| | | collectionType: this.editConfig.infomation.collectionType, |
| | | fileId: 0, |
| | | id: 0, |
| | | moneyType: "人民币", |
| | |
| | | } |
| | | ] |
| | | } else if (this.allTerms === 3) { |
| | | this.tableData.tableInfomation = [ |
| | | { |
| | | amount: this.amount, |
| | | amountReceivable: this.amount * 0.3, |
| | | amountReceived: 0, |
| | | amountTotal: 0, |
| | | collectionDate: this.setDate(this.firstDate, 0), |
| | | collectionType: 0, |
| | | fileId: 0, |
| | | id: 0, |
| | | moneyType: "人民币", |
| | | percent: 30, |
| | | principalId: this.principalId, |
| | | remark: "", |
| | | sourceId: this.sourceId, |
| | | sourceType: this.sourceType, |
| | | status: 1, |
| | | term: 1 |
| | | }, |
| | | { |
| | | amount: this.amount, |
| | | amountReceivable: this.amount * 0.5, |
| | | amountReceived: 0, |
| | | amountTotal: 0, |
| | | collectionDate: this.setDate(this.firstDate, 1), |
| | | collectionType: 0, |
| | | fileId: 0, |
| | | id: 0, |
| | | moneyType: "人民币", |
| | | percent: 50, |
| | | principalId: this.principalId, |
| | | remark: "", |
| | | sourceId: this.sourceId, |
| | | sourceType: this.sourceType, |
| | | status: 1, |
| | | term: 2 |
| | | }, |
| | | { |
| | | amount: this.amount, |
| | | amountReceivable: this.amount * 0.2, |
| | | amountReceived: 0, |
| | | amountTotal: 0, |
| | | collectionDate: this.setDate(this.firstDate, 2), |
| | | collectionType: 0, |
| | | fileId: 0, |
| | | id: 0, |
| | | moneyType: "人民币", |
| | | percent: 20, |
| | | principalId: this.principalId, |
| | | remark: "", |
| | | sourceId: this.sourceId, |
| | | sourceType: this.sourceType, |
| | | status: 1, |
| | | term: 3 |
| | | } |
| | | ] |
| | | this.setTableInfomation(this.firstDate) |
| | | this.tableData.tableInfomation = this.tableInfomation |
| | | } |
| | | }, |
| | | delClick(row) { |
| | |
| | | }, |
| | | principalClick(val) { |
| | | this.principalId = val |
| | | this.setTableInfomation(this.firstDate) |
| | | this.tableData.tableInfomation = this.tableInfomation |
| | | } |
| | | } |
| | | } |
| | |
| | | }, |
| | | created() { |
| | | this.setTable() |
| | | console.log(this.addConfig) |
| | | if (!this.isDetail) { |
| | | this.serviceContractId = 0 |
| | | } else { |
| | |
| | | serviceContractId: this.serviceContractId |
| | | }) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | if (res.data.list && res.data.list.length > 0) { |
| | | const list = res.data.list.map((item) => { |
| | | if (res.data.code === 200) { |
| | | if (res.data.data.data && res.data.data.data.length > 0) { |
| | | const list = res.data.data.data.map((item) => { |
| | | return { |
| | | ...item |
| | | } |
| | | }) |
| | | this.tableList.tableInfomation = list || [] |
| | | this.pagerOptions.totalCount = res.data.count |
| | | this.pagerOptions.totalCount = res.data.data.count |
| | | } else { |
| | | this.tableList.tableInfomation = [] |
| | | } |
| | |
| | | // 新建 |
| | | addBtnClick() { |
| | | if (this.tableList.tableInfomation && this.tableList.tableInfomation.length > 0) { |
| | | this.$message.success("该订单已创建收款计划") |
| | | this.$confirm("该订单已创建收款计划", "提示", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | |
| | | }) |
| | | .then((res) => { |
| | | console.log(res) |
| | | if (res.code === 200) { |
| | | if (res.data.list && res.data.list.length > 0) { |
| | | const list = res.data.list.map((item) => { |
| | | if (res.data.code === 200) { |
| | | if (res.data.data.data && res.data.data.data.length > 0) { |
| | | const list = res.data.data.data.map((item) => { |
| | | return { |
| | | ...item, |
| | | paymentType_name: item.PaymentType.name, |
| | | paymentType_name: item.paymentType.name, |
| | | principal_name: item.principal.username |
| | | } |
| | | }) |
| | | this.tableList.tableInfomation = list || [] |
| | | this.pagerOptions.totalCount = res.data.count |
| | | this.pagerOptions.totalCount = res.data.data.count |
| | | } else { |
| | | this.tableList.tableInfomation = [] |
| | | } |
| | |
| | | </el-row> |
| | | </div> --> |
| | | <!-- 展开收起 --> |
| | | <div v-if="editConfig.title === '新建'" class="unflod-collapse" @click="unflodCollapseClick"> |
| | | <!-- <div v-if="editConfig.title === '新建'" class="unflod-collapse" @click="unflodCollapseClick"> |
| | | <div>{{ unflodCollapseStr }}</div> |
| | | <div v-if="isUnflod"><i class="el-icon-arrow-up"></i></div> |
| | | <div v-else><i class="el-icon-arrow-down"></i></div> |
| | | </div> |
| | | </div> --> |
| | | <!-- 选择审批流程 --> |
| | | <!-- <div class="basic-info-title">选择审批流程</div> |
| | | <div class="basic-info-view"> |
| | |
| | | <div class="tab-view"> |
| | | <el-tabs v-model="activeName" @tab-click="tabsClick"> |
| | | <el-tab-pane label="详情" name="first"></el-tab-pane> |
| | | <el-tab-pane label="附件管理" name="annex"> |
| | | <!-- <template slot="label"> |
| | | <!-- <el-tab-pane label="附件管理" name="annex"> --> |
| | | <!-- <template slot="label"> |
| | | <div>跟进记录<el-badge type="primary" :value="2"> </el-badge></div> |
| | | </template> --> |
| | | </el-tab-pane> |
| | | <!-- </el-tab-pane> --> |
| | | </el-tabs> |
| | | </div> |
| | | <div v-if="activeName === 'first'" class="detail"> |
| | |
| | | <div class="tab-view"> |
| | | <el-tabs v-model="activeName" @tab-click="tabsClick"> |
| | | <el-tab-pane label="详情" name="first"></el-tab-pane> |
| | | <el-tab-pane label="附件管理" name="annex"> |
| | | <!-- <template slot="label"> |
| | | <!-- <el-tab-pane label="附件管理" name="annex"> --> |
| | | <!-- <template slot="label"> |
| | | <div>跟进记录<el-badge type="primary" :value="2"> </el-badge></div> |
| | | </template> --> |
| | | </el-tab-pane> |
| | | <!-- </el-tab-pane> --> |
| | | </el-tabs> |
| | | </div> |
| | | <div v-if="activeName === 'first'" class="detail"> |
| | |
| | | <div class="custom-name"> |
| | | <el-autocomplete |
| | | v-model="editConfig.infomation.client_name" |
| | | :fetch-suggestions="querySearchAsync" |
| | | :fetch-suggestions=" |
| | | (queryString, callback) => { |
| | | querySearchAsync(queryString, callback, 'client') |
| | | } |
| | | " |
| | | value-key="name" |
| | | @select="handleSelectClient" |
| | | @select="handleSelectClient('client', $event)" |
| | | ></el-autocomplete> |
| | | <div class="common-select-btn" @click="selClientClick"> |
| | | <div class="common-select-btn" @click="selClientClick('client')"> |
| | | <i class="el-icon-circle-plus-outline" title="选择"></i> |
| | | </div> |
| | | <div class="common-select-btn" @click="clearupClient"> |
| | | <div class="common-select-btn" @click="clearupClient('client')"> |
| | | <i class="el-icon-edit-outline" title="清除"></i> |
| | | </div> |
| | | </div> |
| | |
| | | editVisible: false, |
| | | title: "", |
| | | infomation: {} |
| | | } |
| | | }, |
| | | clientId: this.editCommonConfig.infomation.client_id |
| | | } |
| | | }, |
| | | created() { |
| | |
| | | const params = this.saveParams() |
| | | console.log(params) |
| | | if (this.editConfig.title === "新建") { |
| | | getAddMasterOrder(params) |
| | | .then((res) => { |
| | | console.log(res) |
| | | this.editConfig.visible = false |
| | | if (res.code === 200) { |
| | | this.$message({ |
| | | message: "添加成功", |
| | | type: "success" |
| | | }) |
| | | this.$parent.getData() |
| | | } |
| | | }) |
| | | .catch((err) => { |
| | | console.log(err) |
| | | }) |
| | | getAddMasterOrder(params).then((res) => { |
| | | console.log(res) |
| | | this.editConfig.visible = false |
| | | if (res.code === 200) { |
| | | this.$message.success("添加成功") |
| | | this.$parent.getData() |
| | | } |
| | | }) |
| | | } else { |
| | | getUpdateMasterOrder(params) |
| | | .then((res) => { |
| | | console.log(res) |
| | | this.editConfig.visible = false |
| | | if (res.code === 200) { |
| | | this.$message({ |
| | | message: "编辑成功", |
| | | type: "success" |
| | | }) |
| | | this.$parent.getData() |
| | | } |
| | | }) |
| | | .catch((err) => { |
| | | console.log(err) |
| | | }) |
| | | getUpdateMasterOrder(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") |
| | |
| | | let data = this.editConfig.infomation |
| | | let params = { |
| | | id: this.editConfig.title === "新建" ? 0 : data.id, |
| | | client_id: parseInt(data.client_id) || 0, |
| | | client_id: this.clientId || 0, |
| | | end_time: data.end_time || "", |
| | | member_id: data.member_id || 0, |
| | | money: parseFloat(data.money) || "0", |
| | | money: data.money || 0, |
| | | number: data.number || "", |
| | | start_time: data.start_time || "" |
| | | } |
| | |
| | | handleClose() { |
| | | this.editConfig.visible = false |
| | | }, |
| | | // 选择客户相关方法 |
| | | querySearchAsync(queryString, cb) { |
| | | var restaurants = this.clientList |
| | | // 选择用户相关方法 |
| | | querySearchAsync(queryString, cb, value) { |
| | | var restaurants = [] |
| | | if (value === "client") { |
| | | restaurants = this.clientList |
| | | } |
| | | var results = queryString ? restaurants.filter(this.createStateFilter(queryString)) : restaurants |
| | | cb(results) |
| | | }, |
| | |
| | | return state.name.toLowerCase().indexOf(queryString.toLowerCase()) === 0 |
| | | } |
| | | }, |
| | | handleSelectClient(item) { |
| | | this.editConfig.infomation.client_id = item.id |
| | | handleSelectClient(value, item) { |
| | | if (value === "client") { |
| | | this.clientId = item.id |
| | | } |
| | | }, |
| | | selClientClick() { |
| | | this.editSelectClientConfig.editVisible = true |
| | | selClientClick(value) { |
| | | if (value === "client") { |
| | | this.editSelectClientConfig.editVisible = true |
| | | } |
| | | }, |
| | | selClient(row) { |
| | | console.log(row) |
| | | this.editConfig.infomation.client_name = row.name |
| | | this.editConfig.infomation.client_id = row.id |
| | | selClient(row, value) { |
| | | if (value === "client") { |
| | | this.editConfig.infomation.client_name = row.name |
| | | this.clientId = row.id |
| | | } |
| | | }, |
| | | // 清除已选择用户 |
| | | clearupClient() { |
| | | this.editConfig.infomation.client_name = "" |
| | | this.editConfig.infomation.client_id = 0 |
| | | clearupClient(value) { |
| | | if (value === "client") { |
| | | this.editConfig.infomation.client_name = "" |
| | | this.clientId = 0 |
| | | } else if (value === "contact") { |
| | | this.editConfig.infomation.contact_name = "" |
| | | this.contactId = 0 |
| | | } |
| | | }, |
| | | // 添加附件 |
| | | addAnnexClick() {}, |
| | |
| | | @addProductClick="addProductClick" |
| | | @emptyProductClick="emptyProductClick" |
| | | @recalculateProductClick="recalculateProductClick" |
| | | @clearupProduct="clearupProduct" |
| | | /> |
| | | </div> |
| | | <!-- 选择审批流程 --> |
| | |
| | | showSummary: { |
| | | show: true, |
| | | total: true, |
| | | sumProp: ["Amount", "Unit", "other3"], |
| | | mergeNumber: 3 |
| | | sumProp: ["Amount", "total"], |
| | | mergeNumber: 2 |
| | | }, |
| | | editSelectClientConfig: { |
| | | editVisible: false, |
| | |
| | | saleChanceId: this.editCommonConfig.infomation.sale_chance_id, |
| | | tableData: [], |
| | | productId: 1, |
| | | addProductArr: [], |
| | | isProductName: false |
| | | isNoProduct: true |
| | | } |
| | | }, |
| | | created() { |
| | |
| | | } |
| | | }) |
| | | }, |
| | | productNameValidate() { |
| | | for (let i = 0; i < this.tableData.length; i++) { |
| | | if (this.tableData[i].Name === "") { |
| | | this.isProductName = true |
| | | return |
| | | } else { |
| | | this.isProductName = false |
| | | } |
| | | } |
| | | }, |
| | | // 保存 |
| | | saveClick(formName) { |
| | | this.productNameValidate() |
| | | this.$refs[formName].validate((valid) => { |
| | | if (valid) { |
| | | console.log(this.isProductName) |
| | | if (this.isProductName) { |
| | | 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() |
| | |
| | | // 设置允许上传文件格式 |
| | | setFormatClick() {}, |
| | | setTableForm() { |
| | | if (this.editConfig.title === "新建" || this.editConfig.infomation.products === null) { |
| | | if (this.editConfig.title === "新建") { |
| | | this.tableData = [ |
| | | { |
| | | id: 1, |
| | | Amount: 0, |
| | | IsSale: true, |
| | | MaterialMode: "", |
| | | MinInventory: 0, |
| | | Name: "", |
| | | Number: "", |
| | | PurchaseType: "", |
| | | SalePrice: 0, |
| | | Unit: "" |
| | | productId: this.productId, |
| | | id: 0, |
| | | amount: 0, |
| | | desc: "", |
| | | name: "", |
| | | number: "", |
| | | price: 0, |
| | | total: 0 |
| | | } |
| | | ] |
| | | } else { |
| | | this.tableData = this.editConfig.infomation.products |
| | | this.tableData.map((item, index) => { |
| | | item.productId = index + 1 |
| | | }) |
| | | } |
| | | this.productTableList = { |
| | | tableData: this.tableData, |
| | | tableColumn: [ |
| | | { label: "#", prop: "id", width: 40 }, |
| | | { label: "产品名称", prop: "Name", input: true, isRequird: true }, |
| | | { label: "产品编号", prop: "Number" }, |
| | | { label: "数量", prop: "Amount", input: true, isRequird: true }, |
| | | { label: "销售单价", prop: "Unit", input: true }, |
| | | { label: "价税合计", prop: "total", input: true }, |
| | | { label: "描述", prop: "other8" } |
| | | { label: "#", prop: "productId", width: 40 }, |
| | | { label: "产品名称", prop: "name", productName: true, isRequird: true }, |
| | | { label: "产品编号", prop: "number" }, |
| | | { label: "数量", prop: "amount", inputNumber: true, isRequird: true }, |
| | | { label: "销售单价", prop: "price", inputFloat: true }, |
| | | { label: "价税合计", prop: "total", inputFloat: true } |
| | | ] |
| | | } |
| | | }, |
| | | // 产品列表输入 |
| | | inputContent(val, prop, row) { |
| | | console.log("aaaaaaaa") |
| | | console.log(val, prop) |
| | | this.productId = row.id |
| | | this.productId = row.productId |
| | | this.tableData.map((item) => { |
| | | if (item.id === row.id) { |
| | | if (item.productId === row.productId) { |
| | | item[prop] = val |
| | | } |
| | | }) |
| | | console.log(this.tableData) |
| | | }, |
| | | // 产品新增 |
| | | addProductClick() { |
| | | this.productId++ |
| | | this.tableData.push({ |
| | | id: this.productId, |
| | | Amount: 0, |
| | | IsSale: true, |
| | | MaterialMode: "", |
| | | MinInventory: 0, |
| | | Name: "", |
| | | Number: "", |
| | | PurchaseType: "", |
| | | SalePrice: 0, |
| | | Unit: "" |
| | | productId: this.productId, |
| | | id: 0, |
| | | amount: 0, |
| | | desc: "", |
| | | name: "", |
| | | number: "", |
| | | price: 0, |
| | | total: 0 |
| | | }) |
| | | this.showSummary.show = true |
| | | }, |
| | | // 产品清空 |
| | | emptyProductClick() { |
| | | this.productId = 1 |
| | | this.tableData = [ |
| | | { |
| | | id: 1, |
| | | Amount: 0, |
| | | IsSale: true, |
| | | MaterialMode: "", |
| | | MinInventory: 0, |
| | | Name: "", |
| | | Number: "", |
| | | PurchaseType: "", |
| | | SalePrice: 0, |
| | | Unit: "" |
| | | productId: this.productId, |
| | | id: 0, |
| | | amount: 0, |
| | | desc: "", |
| | | name: "", |
| | | number: "", |
| | | price: 0, |
| | | total: 0 |
| | | } |
| | | ] |
| | | this.productTableList.tableData = this.tableData |
| | | }, |
| | | // 产品重算 |
| | | recalculateProductClick() {} |
| | | recalculateProductClick() {}, |
| | | clearupProduct(data) { |
| | | this.tableData = data |
| | | this.productTableList.tableData = this.tableData |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | }, |
| | | setTableForm() { |
| | | this.productTableList = { |
| | | tableData: [ |
| | | { |
| | | id: "1", |
| | | productName: "上海有限公司", |
| | | other0: "ZDYBD03-1", |
| | | other1: "12", |
| | | other2: "5.00", |
| | | other4: "3.00", |
| | | other3: "2.00" |
| | | } |
| | | ], |
| | | tableData: this.detailConfig.infomation.products, |
| | | tableColumn: [ |
| | | { label: "#", prop: "id", width: 40 }, |
| | | { label: "含税单价", prop: "other9", input: true }, |
| | | { label: "产品名称", prop: "productName", input: true, isRequird: true }, |
| | | { label: "产品编号", prop: "other0" }, |
| | | { label: "数量", prop: "other1", input: true, isRequird: true }, |
| | | { label: "折扣率(%)", prop: "other6", input: true }, |
| | | { label: "不含税单价", prop: "other7", input: true }, |
| | | { label: "折扣额", prop: "other2" }, |
| | | { label: "税(销售)", prop: "other7", input: true }, |
| | | { label: "实际含税单价", prop: "other3" }, |
| | | { label: "不含税金额", prop: "other4" }, |
| | | { label: "价税合计", prop: "other3", input: true }, |
| | | { label: "描述", prop: "other8" }, |
| | | { label: "源单类型", prop: "other5" }, |
| | | { label: "源单", prop: "other6" } |
| | | { label: "产品名称", prop: "name", productName: true, isRequird: true }, |
| | | { label: "产品编号", prop: "number" }, |
| | | { label: "数量", prop: "amount", inputNumber: true, isRequird: true }, |
| | | { label: "销售单价", prop: "price", inputFloat: true }, |
| | | { label: "价税合计", prop: "total", inputFloat: true } |
| | | ] |
| | | } |
| | | } |
| | |
| | | { label: "有效期", prop: "validity_date", min: 100 }, // 修改时间 |
| | | // { label: "小计", prop: "subTotal" }, // 小计 |
| | | // { label: "合计", prop: "total" }, // 合计 |
| | | { label: "产品名称", prop: "productName", isProduct: true }, // 产品名称 |
| | | { label: "数量", prop: "number1" }, // 数量 |
| | | { label: "价税合计", prop: "priceTax" } // 价税合计 |
| | | { label: "产品名称", prop: "productName", isProductName: true }, |
| | | { label: "数量", prop: "productNumber", isProductAmount: true }, |
| | | { label: "价税合计", prop: "priceTax", isProductCommon: true } |
| | | ] |
| | | } |
| | | this.searchOptions = [] |
| | |
| | | </div> |
| | | </div> |
| | | <div class="product-view"> |
| | | <CommonFormTableView :show-summary="showSummary" :product-table-list="productTableList" /> |
| | | <CommonFormTableView |
| | | :show-summary="showSummary" |
| | | :product-table-list="productTableList" |
| | | @inputContent="inputContent" |
| | | @addProductClick="addProductClick" |
| | | @emptyProductClick="emptyProductClick" |
| | | @recalculateProductClick="recalculateProductClick" |
| | | @clearupProduct="clearupProduct" |
| | | /> |
| | | </div> |
| | | <!-- 选择审批流程 --> |
| | | <!-- <div v-if="editConfig.title === '新建'" class="basic-info-title">选择审批流程</div> |
| | |
| | | title: "", |
| | | infomation: {} |
| | | }, |
| | | clientId: this.editCommonConfig.infomation.client_id |
| | | clientId: this.editCommonConfig.infomation.client_id, |
| | | productId: 1, |
| | | isNoProduct: true |
| | | } |
| | | }, |
| | | created() { |
| | |
| | | this.$refs[formName].validate((valid) => { |
| | | if (valid) { |
| | | console.log(this.editConfig.infomation) |
| | | const params = this.saveParams() |
| | | console.log(params) |
| | | if (this.editConfig.title === "新建") { |
| | | getAddSalesRefund(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.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 { |
| | | getUpdateSalesRefund(params).then((res) => { |
| | | console.log(res) |
| | | this.editConfig.visible = false |
| | | if (res.code === 200) { |
| | | this.$message.success("编辑成功") |
| | | this.$parent.getData() |
| | | } |
| | | }) |
| | | const params = this.saveParams() |
| | | console.log(params) |
| | | if (this.editConfig.title === "新建") { |
| | | getAddSalesRefund(params).then((res) => { |
| | | console.log(res) |
| | | this.editConfig.visible = false |
| | | if (res.code === 200) { |
| | | this.$message.success("添加成功") |
| | | this.$parent.getData() |
| | | } |
| | | }) |
| | | } else { |
| | | getUpdateSalesRefund(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") |
| | |
| | | // 设置允许上传文件格式 |
| | | setFormatClick() {}, |
| | | setTableForm() { |
| | | this.productTableList = { |
| | | tableData: [ |
| | | if (this.editConfig.title === "新建") { |
| | | this.tableData = [ |
| | | { |
| | | id: "1", |
| | | productName: "上海有限公司", |
| | | other0: "ZDYBD03-1", |
| | | other1: "12", |
| | | other2: "5.00", |
| | | other4: "3.00", |
| | | other3: "2.00" |
| | | productId: this.productId, |
| | | id: 0, |
| | | amount: 0, |
| | | desc: "", |
| | | name: "", |
| | | number: "", |
| | | price: 0, |
| | | total: 0 |
| | | } |
| | | ], |
| | | ] |
| | | } else { |
| | | this.tableData = this.editConfig.infomation.products |
| | | this.tableData.map((item, index) => { |
| | | item.productId = index + 1 |
| | | }) |
| | | } |
| | | this.productTableList = { |
| | | tableData: this.tableData, |
| | | tableColumn: [ |
| | | { label: "#", prop: "id", width: 40 }, |
| | | { label: "产品名称", prop: "productName", input: true, isRequird: true }, |
| | | { label: "产品编号", prop: "other0" }, |
| | | { label: "源单类型", prop: "other5" }, |
| | | { label: "源单", prop: "other6" }, |
| | | { label: "数量", prop: "other1", input: true, isRequird: true }, |
| | | { label: "含税单价", prop: "other9", input: true }, |
| | | { label: "不含税单价", prop: "other7", input: true }, |
| | | { label: "折扣率(%)", prop: "other6", input: true }, |
| | | { label: "折扣额", prop: "other2" }, |
| | | { label: "税(销售)", prop: "other7", input: true }, |
| | | { label: "实际含税单价", prop: "other3" }, |
| | | { label: "不含税金额", prop: "other4" }, |
| | | { label: "价税合计", prop: "other3", input: true }, |
| | | { label: "描述", prop: "other8" } |
| | | { label: "#", prop: "productId", width: 40 }, |
| | | { label: "产品名称", prop: "name", productName: true, isRequird: true }, |
| | | { label: "产品编号", prop: "number" }, |
| | | { label: "数量", prop: "amount", inputNumber: true, isRequird: true }, |
| | | { label: "销售单价", prop: "price", inputFloat: true }, |
| | | { label: "价税合计", prop: "total", inputFloat: true } |
| | | ] |
| | | } |
| | | }, |
| | | // 产品列表输入 |
| | | inputContent(val, prop, row) { |
| | | this.productId = row.productId |
| | | this.tableData.map((item) => { |
| | | if (item.productId === row.productId) { |
| | | item[prop] = val |
| | | } |
| | | }) |
| | | }, |
| | | // 产品新增 |
| | | 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 |
| | | } |
| | | } |
| | | } |
| | |
| | | <div class="tab-view"> |
| | | <el-tabs v-model="activeName" @tab-click="tabsClick"> |
| | | <el-tab-pane label="详情" name="first"></el-tab-pane> |
| | | <el-tab-pane label="附件管理" name="annex"> |
| | | <!-- <template slot="label"> |
| | | <!-- <el-tab-pane label="附件管理" name="annex"> --> |
| | | <!-- <template slot="label"> |
| | | <div>跟进记录<el-badge type="primary" :value="2"> </el-badge></div> |
| | | </template> --> |
| | | </el-tab-pane> |
| | | <!-- </el-tab-pane> --> |
| | | </el-tabs> |
| | | </div> |
| | | <div v-if="activeName === 'first'" class="detail"> |
| | |
| | | }, |
| | | setTableForm() { |
| | | this.productTableList = { |
| | | tableData: [ |
| | | { |
| | | id: "1", |
| | | productName: "上海有限公司", |
| | | other0: "ZDYBD03-1", |
| | | other1: "12", |
| | | other2: "5.00", |
| | | other4: "3.00", |
| | | other3: "2.00" |
| | | } |
| | | ], |
| | | tableData: this.detailConfig.infomation.products, |
| | | tableColumn: [ |
| | | { label: "#", prop: "id", width: 40 }, |
| | | { label: "含税单价", prop: "other9", input: true }, |
| | | { label: "产品名称", prop: "productName", input: true, isRequird: true }, |
| | | { label: "产品编号", prop: "other0" }, |
| | | { label: "数量", prop: "other1", input: true, isRequird: true }, |
| | | { label: "折扣率(%)", prop: "other6", input: true }, |
| | | { label: "不含税单价", prop: "other7", input: true }, |
| | | { label: "折扣额", prop: "other2" }, |
| | | { label: "税(销售)", prop: "other7", input: true }, |
| | | { label: "实际含税单价", prop: "other3" }, |
| | | { label: "不含税金额", prop: "other4" }, |
| | | { label: "价税合计", prop: "other3", input: true }, |
| | | { label: "描述", prop: "other8" }, |
| | | { label: "源单类型", prop: "other5" }, |
| | | { label: "源单", prop: "other6" } |
| | | { label: "产品名称", prop: "name", productName: true, isRequird: true }, |
| | | { label: "产品编号", prop: "number" }, |
| | | { label: "数量", prop: "amount", inputNumber: true, isRequird: true }, |
| | | { label: "销售单价", prop: "price", inputFloat: true }, |
| | | { label: "价税合计", prop: "total", inputFloat: true } |
| | | ] |
| | | } |
| | | } |
| | |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="备注" prop="remark"> |
| | | <el-input type="textarea" :autosize="{ minRows: 2 }" v-model="editConfig.infomation.notes"></el-input> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 2 }" |
| | | v-model="editConfig.infomation.remark" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | @addProductClick="addProductClick" |
| | | @emptyProductClick="emptyProductClick" |
| | | @recalculateProductClick="recalculateProductClick" |
| | | @clearupProduct="clearupProduct" |
| | | /> |
| | | </div> |
| | | <!-- 选择审批流程 --> |
| | |
| | | showSummary: { |
| | | show: true, |
| | | total: true, |
| | | sumProp: ["other1", "other7"], |
| | | sumProp: ["Amount", "total"], |
| | | mergeNumber: 2 |
| | | }, |
| | | editSelectClientConfig: { |
| | |
| | | }, |
| | | clientId: this.editCommonConfig.infomation.client_id, |
| | | saleChanceId: this.editCommonConfig.infomation.saleChanceId, |
| | | productId: 1 |
| | | productId: 1, |
| | | isNoProduct: true |
| | | } |
| | | }, |
| | | created() { |
| | |
| | | this.$refs[formName].validate((valid) => { |
| | | if (valid) { |
| | | console.log(this.editConfig.infomation) |
| | | const params = this.saveParams() |
| | | console.log(params) |
| | | if (this.editConfig.title === "新建") { |
| | | getAddSalesDetails(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.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 { |
| | | getUpdateSalesDetails(params).then((res) => { |
| | | console.log(res) |
| | | this.editConfig.visible = false |
| | | if (res.code === 200) { |
| | | this.$message.success("编辑成功") |
| | | this.$parent.getData() |
| | | } |
| | | }) |
| | | const params = this.saveParams() |
| | | console.log(params) |
| | | if (this.editConfig.title === "新建") { |
| | | getAddSalesDetails(params).then((res) => { |
| | | console.log(res) |
| | | this.editConfig.visible = false |
| | | if (res.code === 200) { |
| | | this.$message.success("添加成功") |
| | | this.$parent.getData() |
| | | } |
| | | }) |
| | | } else { |
| | | getUpdateSalesDetails(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") |
| | |
| | | memberId: data.memberId || 0, |
| | | number: data.number || "", |
| | | phone: data.phone || "", |
| | | products: [ |
| | | { |
| | | amount: 0, |
| | | desc: "", |
| | | id: 0, |
| | | name: "", |
| | | number: "", |
| | | price: 0, |
| | | total: 0 |
| | | } |
| | | ], |
| | | products: this.tableData, |
| | | remark: data.remark || "", |
| | | saleChanceId: this.saleChanceId || 0, |
| | | saleType: data.saleType || 0, |
| | |
| | | } |
| | | }, |
| | | selClient(row, value) { |
| | | if (value === "contact") { |
| | | this.editConfig.infomation.contact_name = row.name |
| | | this.contactId = row.id |
| | | if (value === "client") { |
| | | this.editConfig.infomation.client_name = row.name |
| | | this.clientId = row.id |
| | | } else if (value === "chance") { |
| | | this.editConfig.infomation.sale_chance_name = row.name |
| | | this.saleChanceId = row.id |
| | |
| | | if (this.editConfig.title === "新建") { |
| | | this.tableData = [ |
| | | { |
| | | id: 1, |
| | | Amount: 0, |
| | | IsSale: true, |
| | | MaterialMode: "", |
| | | MinInventory: 0, |
| | | Name: "", |
| | | Number: "", |
| | | PurchaseType: "", |
| | | SalePrice: 0, |
| | | Unit: "" |
| | | productId: this.productId, |
| | | id: 0, |
| | | amount: 0, |
| | | desc: "", |
| | | name: "", |
| | | number: "", |
| | | price: 0, |
| | | total: 0 |
| | | } |
| | | ] |
| | | } else { |
| | | this.tableData = this.editConfig.infomation.products |
| | | this.tableData.map((item, index) => { |
| | | item.productId = index + 1 |
| | | }) |
| | | } |
| | | this.productTableList = { |
| | | tableData: this.tableData, |
| | | tableColumn: [ |
| | | { label: "#", prop: "id", width: 40 }, |
| | | { label: "产品名称", prop: "Name", input: true, isRequird: true }, |
| | | { label: "产品编号", prop: "Number" }, |
| | | { label: "数量", prop: "Amount", input: true, isRequird: true }, |
| | | { label: "销售单价", prop: "Unit", input: true }, |
| | | { label: "价税合计", prop: "total", input: true }, |
| | | { label: "描述", prop: "other8" } |
| | | { label: "#", prop: "productId", width: 40 }, |
| | | { label: "产品名称", prop: "name", productName: true, isRequird: true }, |
| | | { label: "产品编号", prop: "number" }, |
| | | { label: "数量", prop: "amount", inputNumber: true, isRequird: true }, |
| | | { label: "销售单价", prop: "price", inputFloat: true }, |
| | | { label: "价税合计", prop: "total", inputFloat: true } |
| | | ] |
| | | } |
| | | }, |
| | | // 产品列表输入 |
| | | inputContent(val, prop, row) { |
| | | console.log("aaaaaaaa") |
| | | console.log(val, prop) |
| | | this.productId = row.id |
| | | this.productId = row.productId |
| | | this.tableData.map((item) => { |
| | | if (item.id === row.id) { |
| | | if (item.productId === row.productId) { |
| | | item[prop] = val |
| | | } |
| | | }) |
| | | console.log(this.tableData) |
| | | }, |
| | | // 产品新增 |
| | | addProductClick() { |
| | | this.productId++ |
| | | this.tableData.push({ |
| | | id: this.productId, |
| | | Amount: 0, |
| | | IsSale: true, |
| | | MaterialMode: "", |
| | | MinInventory: 0, |
| | | Name: "", |
| | | Number: "", |
| | | PurchaseType: "", |
| | | SalePrice: 0, |
| | | Unit: "" |
| | | productId: this.productId, |
| | | id: 0, |
| | | amount: 0, |
| | | desc: "", |
| | | name: "", |
| | | number: "", |
| | | price: 0, |
| | | total: 0 |
| | | }) |
| | | this.showSummary.show = true |
| | | }, |
| | | // 产品清空 |
| | | emptyProductClick() { |
| | | this.productId = 1 |
| | | this.tableData = [ |
| | | { |
| | | id: 1, |
| | | Amount: 0, |
| | | IsSale: true, |
| | | MaterialMode: "", |
| | | MinInventory: 0, |
| | | Name: "", |
| | | Number: "", |
| | | PurchaseType: "", |
| | | SalePrice: 0, |
| | | Unit: "" |
| | | productId: this.productId, |
| | | id: 0, |
| | | amount: 0, |
| | | desc: "", |
| | | name: "", |
| | | number: "", |
| | | price: 0, |
| | | total: 0 |
| | | } |
| | | ] |
| | | this.productTableList.tableData = this.tableData |
| | | }, |
| | | // 产品重算 |
| | | recalculateProductClick() {} |
| | | recalculateProductClick() {}, |
| | | clearupProduct(data) { |
| | | this.tableData = data |
| | | this.productTableList.tableData = this.tableData |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | }, |
| | | setTableForm() { |
| | | this.productTableList = { |
| | | tableData: [ |
| | | { |
| | | id: "1", |
| | | productName: "上海有限公司", |
| | | other0: "ZDYBD03-1", |
| | | other1: "12", |
| | | other2: "5.00", |
| | | other4: "3.00", |
| | | other3: "2.00" |
| | | } |
| | | ], |
| | | tableData: this.detailConfig.infomation.products, |
| | | tableColumn: [ |
| | | { label: "#", prop: "id", width: 40 }, |
| | | { label: "含税单价", prop: "other9", input: true }, |
| | | { label: "产品名称", prop: "productName", input: true, isRequird: true }, |
| | | { label: "产品编号", prop: "other0" }, |
| | | { label: "数量", prop: "other1", input: true, isRequird: true }, |
| | | { label: "折扣率(%)", prop: "other6", input: true }, |
| | | { label: "不含税单价", prop: "other7", input: true }, |
| | | { label: "折扣额", prop: "other2" }, |
| | | { label: "税(销售)", prop: "other7", input: true }, |
| | | { label: "实际含税单价", prop: "other3" }, |
| | | { label: "不含税金额", prop: "other4" }, |
| | | { label: "价税合计", prop: "other3", input: true }, |
| | | { label: "描述", prop: "other8" }, |
| | | { label: "源单类型", prop: "other5" }, |
| | | { label: "源单", prop: "other6" } |
| | | { label: "产品名称", prop: "name", productName: true, isRequird: true }, |
| | | { label: "产品编号", prop: "number" }, |
| | | { label: "数量", prop: "amount", inputNumber: true, isRequird: true }, |
| | | { label: "销售单价", prop: "price", inputFloat: true }, |
| | | { label: "价税合计", prop: "total", inputFloat: true } |
| | | ] |
| | | } |
| | | } |
| | |
| | | { label: "应收余额", prop: "amountReceivable", price: true }, |
| | | { label: "已开票金额", prop: "invoicedAmount", price: true }, |
| | | { label: "未开票金额", prop: "uninvoicedAmount", price: true }, |
| | | { label: "产品名称", prop: "productName" }, |
| | | { label: "数量", prop: "number1" }, |
| | | { label: "含税单价", prop: "taxUnitPrice", price: true }, |
| | | { label: "未出库数量", prop: "unOutoundNo" }, |
| | | { label: "价税合计", prop: "priceTax", price: true } |
| | | { label: "产品名称", prop: "productName", isProductName: true }, |
| | | { label: "数量", prop: "productNumber", isProductAmount: true }, |
| | | { label: "销售单价", prop: "taxUnitPrice", isProductCommon: true }, |
| | | { label: "价税合计", prop: "priceTax", isProductCommon: true } |
| | | ] |
| | | } |
| | | this.searchOptions = [] |
| | |
| | | } |
| | | } |
| | | ::v-deep { |
| | | .el-table .cell, |
| | | .el-table th.el-table__cell > .cell { |
| | | padding: 0 2px; |
| | | .el-table .el-table__cell { |
| | | padding: 0; |
| | | } |
| | | .el-table__header tr, |
| | | .el-table__header th { |
| | | height: 48px; |
| | | } |
| | | .el-table__footer-wrapper tbody td.el-table__cell { |
| | | height: 48px; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="预算绝对值" prop="budget"> |
| | | <el-input v-model="editConfig.infomation.budget"></el-input> |
| | | <el-input-number |
| | | v-model="editConfig.infomation.budget" |
| | | placeholder="请输入" |
| | | :min="0" |
| | | :precision="2" |
| | | :controls="false" |
| | | style="width: 25%; margin-right: 5px" |
| | | ></el-input-number> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | |
| | | this.editConfig.visible = false |
| | | if (res.code === 200) { |
| | | this.$message.success("添加成功") |
| | | // if (this.editConfig.title === "新建" && this.editConfig.infomation.client_name) { |
| | | // this.$parent.handleClose() |
| | | // } else { |
| | | this.$parent.getData() |
| | | // } |
| | | } |
| | |
| | | <div style="margin-left: 400px"> |
| | | 币种 |
| | | <el-select v-model="editConfig.infomation.currency" placeholder="请选择" size="mini" style="width: 63%"> |
| | | <el-option v-for="item in currencyOptions" :key="item.value" :label="item.label" :value="item.value"> |
| | | <el-option v-for="item in currencyOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <div class="product-view"> |
| | | <CommonFormTableView :show-summary="showSummary" :product-table-list="productTableList" /> |
| | | <CommonFormTableView |
| | | :show-summary="showSummary" |
| | | :product-table-list="productTableList" |
| | | @inputContent="inputContent" |
| | | @addProductClick="addProductClick" |
| | | @emptyProductClick="emptyProductClick" |
| | | @recalculateProductClick="recalculateProductClick" |
| | | @clearupProduct="clearupProduct" |
| | | /> |
| | | </div> |
| | | </div> |
| | | </el-form> |
| | |
| | | productTableList: {}, |
| | | showSummary: { |
| | | show: true, |
| | | total: false, |
| | | refundable: true, |
| | | sumProp: ["other1", "other2", "other3", "other4"], |
| | | mergeNumber: 4 |
| | | total: true, |
| | | sumProp: ["Amount", "total"], |
| | | mergeNumber: 2 |
| | | }, |
| | | editSelectClientConfig: { |
| | | editVisible: false, |
| | | title: "", |
| | | infomation: {} |
| | | } |
| | | }, |
| | | productId: 1, |
| | | isNoProduct: true |
| | | } |
| | | }, |
| | | created() { |
| | |
| | | .then((res) => { |
| | | this.memberOptions = res.data.member |
| | | this.repositoryOptions = res.data.repository |
| | | // this.currencyOptions = res.data.currency |
| | | this.statusOptions = res.data.salesReturnStatus |
| | | }) |
| | | .catch((err) => { |
| | |
| | | this.$refs[formName].validate((valid) => { |
| | | if (valid) { |
| | | console.log(this.editConfig.infomation) |
| | | 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() |
| | | } |
| | | }) |
| | | 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 { |
| | | getUpdateSalesReturn(params).then((res) => { |
| | | console.log(res) |
| | | this.editConfig.visible = false |
| | | if (res.code === 200) { |
| | | this.$message.success("编辑成功") |
| | | this.$message({ |
| | | message: "编辑成功", |
| | | type: "success" |
| | | }) |
| | | this.$parent.getData() |
| | | } |
| | | }) |
| | | 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.$message({ |
| | | message: "编辑成功", |
| | | type: "success" |
| | | }) |
| | | this.$parent.getData() |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } else { |
| | | console.log("error submit") |
| | |
| | | // 设置允许上传文件格式 |
| | | setFormatClick() {}, |
| | | setTableForm() { |
| | | if (this.editConfig.title === "新建") { |
| | | this.tableData = [ |
| | | { |
| | | productId: this.productId, |
| | | id: 0, |
| | | amount: 0, |
| | | desc: "", |
| | | name: "", |
| | | number: "", |
| | | price: 0, |
| | | total: 0 |
| | | } |
| | | ] |
| | | } else { |
| | | this.tableData = this.editConfig.infomation.products |
| | | this.tableData.map((item, index) => { |
| | | item.productId = index + 1 |
| | | }) |
| | | } |
| | | this.productTableList = { |
| | | tableData: [], |
| | | tableData: this.tableData, |
| | | tableColumn: [ |
| | | { label: "#", prop: "id", width: 40 }, |
| | | { label: "产品名称", prop: "productName", input: true, isRequird: true }, |
| | | { label: "产品编号", prop: "other0" }, |
| | | { label: "源单类型", prop: "other5" }, |
| | | { label: "源单", prop: "other6" }, |
| | | { label: "数量", prop: "other1", input: true, isRequird: true }, |
| | | { label: "含税单价", prop: "other9", input: true }, |
| | | { label: "不含税单价", prop: "other7", input: true }, |
| | | { label: "折扣率(%)", prop: "other6", input: true }, |
| | | { label: "折扣额", prop: "other2" }, |
| | | { label: "税(销售)", prop: "other7", input: true }, |
| | | { label: "实际含税单价", prop: "other3" }, |
| | | { label: "不含税金额", prop: "other4" }, |
| | | { label: "价税合计", prop: "other3", input: true }, |
| | | { label: "描述", prop: "other8" } |
| | | { label: "#", prop: "productId", width: 40 }, |
| | | { label: "产品名称", prop: "name", productName: true, isRequird: true }, |
| | | { label: "产品编号", prop: "number" }, |
| | | { label: "数量", prop: "amount", inputNumber: true, isRequird: true }, |
| | | { label: "销售单价", prop: "price", inputFloat: true }, |
| | | { label: "价税合计", prop: "total", inputFloat: true } |
| | | ] |
| | | } |
| | | }, |
| | | // 产品列表输入 |
| | | inputContent(val, prop, row) { |
| | | this.productId = row.productId |
| | | this.tableData.map((item) => { |
| | | if (item.productId === row.productId) { |
| | | item[prop] = val |
| | | } |
| | | }) |
| | | }, |
| | | // 产品新增 |
| | | 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 |
| | | } |
| | | } |
| | | } |
| | |
| | | }, |
| | | setTableForm() { |
| | | this.productTableList = { |
| | | tableData: [ |
| | | { |
| | | id: "1", |
| | | productName: "上海有限公司", |
| | | other0: "ZDYBD03-1", |
| | | other1: "12", |
| | | other2: "5.00", |
| | | other4: "3.00", |
| | | other3: "2.00" |
| | | } |
| | | ], |
| | | tableData: this.detailConfig.infomation.products, |
| | | tableColumn: [ |
| | | { label: "#", prop: "id", width: 40 }, |
| | | { label: "含税单价", prop: "other9", input: true }, |
| | | { label: "产品名称", prop: "productName", input: true, isRequird: true }, |
| | | { label: "产品编号", prop: "other0" }, |
| | | { label: "数量", prop: "other1", input: true, isRequird: true }, |
| | | { label: "折扣率(%)", prop: "other6", input: true }, |
| | | { label: "不含税单价", prop: "other7", input: true }, |
| | | { label: "折扣额", prop: "other2" }, |
| | | { label: "税(销售)", prop: "other7", input: true }, |
| | | { label: "实际含税单价", prop: "other3" }, |
| | | { label: "不含税金额", prop: "other4" }, |
| | | { label: "价税合计", prop: "other3", input: true }, |
| | | { label: "描述", prop: "other8" }, |
| | | { label: "源单类型", prop: "other5" }, |
| | | { label: "源单", prop: "other6" } |
| | | { label: "产品名称", prop: "name", productName: true, isRequird: true }, |
| | | { label: "产品编号", prop: "number" }, |
| | | { label: "数量", prop: "amount", inputNumber: true, isRequird: true }, |
| | | { label: "销售单价", prop: "price", inputFloat: true }, |
| | | { label: "价税合计", prop: "total", inputFloat: true } |
| | | ] |
| | | } |
| | | } |
| | |
| | | </div> |
| | | <div class="product-view"> |
| | | <CommonFormTableView |
| | | :show-summary="showSummary" |
| | | :product-table-list="productTableList" |
| | | @inputContent="inputContent" |
| | | @addProductClick="addProductClick" |
| | | @emptyProductClick="emptyProductClick" |
| | | @recalculateProductClick="recalculateProductClick" |
| | | @clearupProduct="clearupProduct" |
| | | /> |
| | | </div> |
| | | <!-- 合计 --> |
| | | <div class="basic-info-view"> |
| | | <el-row> |
| | | <el-col :span="7" :offset="17"> |
| | | <el-form-item prop="discount"> |
| | | <template slot="label"> |
| | | <span>整单折扣</span> |
| | | <el-select |
| | | v-model="discount" |
| | | placeholder="请选择" |
| | | size="mini" |
| | | style="width: 104px; margin-left: 3px" |
| | | disabled |
| | | > |
| | | <el-option |
| | | v-for="item in discountOptions" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </template> |
| | | <el-input v-model="editConfig.infomation.discount" disabled></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7" :offset="17"> |
| | | <el-form-item prop="discount"> |
| | | <template slot="label"> |
| | | <span>调整</span> |
| | | <el-select |
| | | v-model="adjust" |
| | | placeholder="请选择" |
| | | size="mini" |
| | | style="width: 74px; margin-left: 3px" |
| | | disabled |
| | | > |
| | | <el-option |
| | | v-for="item in adjustOptions" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </template> |
| | | <el-input v-model="editConfig.infomation.discount" disabled></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="7" :offset="17"> |
| | | <el-form-item label="合计" prop="total"> |
| | | <el-button type="text" v-model="editConfig.infomation.total" style="color: #555; font-size: 13px">{{ |
| | | editConfig.infomation.total ? editConfig.infomation.total : "0.00" |
| | | }}</el-button> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </div> |
| | | </el-form> |
| | |
| | | productTableList: {}, |
| | | showSummary: { |
| | | show: true, |
| | | total: false, |
| | | sumProp: ["other1", "other7"], |
| | | mergeNumber: 7 |
| | | total: true, |
| | | sumProp: ["Amount", "total"], |
| | | mergeNumber: 2 |
| | | }, |
| | | editSelectClientConfig: { |
| | | editVisible: false, |
| | |
| | | this.$refs[formName].validate((valid) => { |
| | | if (valid) { |
| | | console.log(this.editConfig.infomation) |
| | | const params = this.saveParams() |
| | | console.log(params) |
| | | if (this.editConfig.title === "新建") { |
| | | getAddSubOrder(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.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 { |
| | | getUpdateSubOrder(params).then((res) => { |
| | | console.log(res) |
| | | this.editConfig.visible = false |
| | | if (res.code === 200) { |
| | | this.$message.success("编辑成功") |
| | | this.$parent.getData() |
| | | } |
| | | }) |
| | | const params = this.saveParams() |
| | | console.log(params) |
| | | if (this.editConfig.title === "新建") { |
| | | getAddSubOrder(params).then((res) => { |
| | | console.log(res) |
| | | this.editConfig.visible = false |
| | | if (res.code === 200) { |
| | | this.$message.success("添加成功") |
| | | this.$parent.getData() |
| | | } |
| | | }) |
| | | } else { |
| | | getUpdateSubOrder(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") |
| | |
| | | } else if (value === "master") { |
| | | restaurants = this.masterOrderList |
| | | } |
| | | // else if (value === "chance") { |
| | | // restaurants = this.saleChancelist |
| | | // } else { |
| | | // restaurants = this.saleLeadlist |
| | | // } |
| | | var results = queryString ? restaurants.filter(this.createStateFilter(queryString, value)) : restaurants |
| | | cb(results) |
| | | }, |
| | |
| | | if (this.editConfig.title === "新建") { |
| | | this.tableData = [ |
| | | { |
| | | id: 1, |
| | | Amount: 0, |
| | | IsSale: true, |
| | | MaterialMode: "", |
| | | MinInventory: 0, |
| | | Name: "", |
| | | Number: "", |
| | | PurchaseType: "", |
| | | SalePrice: 0, |
| | | Unit: "" |
| | | productId: this.productId, |
| | | id: 0, |
| | | amount: 0, |
| | | desc: "", |
| | | name: "", |
| | | number: "", |
| | | price: 0, |
| | | total: 0 |
| | | } |
| | | ] |
| | | } else { |
| | | this.tableData = this.editConfig.infomation.products |
| | | this.tableData.map((item, index) => { |
| | | item.productId = index + 1 |
| | | }) |
| | | } |
| | | this.productTableList = { |
| | | tableData: this.tableData, |
| | | tableColumn: [ |
| | | { label: "#", prop: "id", width: 40 }, |
| | | { label: "产品名称", prop: "Name", input: true, isRequird: true }, |
| | | { label: "产品编号", prop: "Number" }, |
| | | { label: "数量", prop: "Amount", input: true, isRequird: true }, |
| | | { label: "销售单价", prop: "Unit", input: true }, |
| | | { label: "价税合计", prop: "total", input: true }, |
| | | { label: "描述", prop: "other8" } |
| | | { label: "#", prop: "productId", width: 40 }, |
| | | { label: "产品名称", prop: "name", productName: true, isRequird: true }, |
| | | { label: "产品编号", prop: "number" }, |
| | | { label: "数量", prop: "amount", inputNumber: true, isRequird: true }, |
| | | { label: "销售单价", prop: "price", inputFloat: true }, |
| | | { label: "价税合计", prop: "total", inputFloat: true } |
| | | ] |
| | | } |
| | | }, |
| | | // 产品列表输入 |
| | | inputContent(val, prop, row) { |
| | | console.log("aaaaaaaa") |
| | | console.log(val, prop) |
| | | this.productId = row.id |
| | | this.productId = row.productId |
| | | this.tableData.map((item) => { |
| | | if (item.id === row.id) { |
| | | if (item.productId === row.productId) { |
| | | item[prop] = val |
| | | } |
| | | }) |
| | | console.log(this.tableData) |
| | | }, |
| | | // 产品新增 |
| | | addProductClick() { |
| | | this.productId++ |
| | | this.tableData.push({ |
| | | id: this.productId, |
| | | Amount: 0, |
| | | IsSale: true, |
| | | MaterialMode: "", |
| | | MinInventory: 0, |
| | | Name: "", |
| | | Number: "", |
| | | PurchaseType: "", |
| | | SalePrice: 0, |
| | | Unit: "" |
| | | productId: this.productId, |
| | | id: 0, |
| | | amount: 0, |
| | | desc: "", |
| | | name: "", |
| | | number: "", |
| | | price: 0, |
| | | total: 0 |
| | | }) |
| | | this.showSummary.show = true |
| | | }, |
| | | // 产品清空 |
| | | emptyProductClick() { |
| | | this.productId = 1 |
| | | this.tableData = [ |
| | | { |
| | | id: 1, |
| | | Amount: 0, |
| | | IsSale: true, |
| | | MaterialMode: "", |
| | | MinInventory: 0, |
| | | Name: "", |
| | | Number: "", |
| | | PurchaseType: "", |
| | | SalePrice: 0, |
| | | Unit: "" |
| | | productId: this.productId, |
| | | id: 0, |
| | | amount: 0, |
| | | desc: "", |
| | | name: "", |
| | | number: "", |
| | | price: 0, |
| | | total: 0 |
| | | } |
| | | ] |
| | | this.productTableList.tableData = this.tableData |
| | | }, |
| | | // 产品重算 |
| | | recalculateProductClick() {} |
| | | recalculateProductClick() {}, |
| | | clearupProduct(data) { |
| | | this.tableData = data |
| | | this.productTableList.tableData = this.tableData |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | }, |
| | | setTableForm() { |
| | | this.productTableList = { |
| | | tableData: [ |
| | | { |
| | | id: "1", |
| | | productName: "上海有限公司", |
| | | other0: "ZDYBD03-1", |
| | | other1: "12", |
| | | other2: "5.00", |
| | | other4: "3.00", |
| | | other3: "2.00" |
| | | } |
| | | ], |
| | | tableData: this.detailConfig.infomation.products, |
| | | tableColumn: [ |
| | | { label: "#", prop: "id", width: 40 }, |
| | | { label: "含税单价", prop: "other9", input: true }, |
| | | { label: "产品名称", prop: "productName", input: true, isRequird: true }, |
| | | { label: "产品编号", prop: "other0" }, |
| | | { label: "数量", prop: "other1", input: true, isRequird: true }, |
| | | { label: "折扣率(%)", prop: "other6", input: true }, |
| | | { label: "不含税单价", prop: "other7", input: true }, |
| | | { label: "折扣额", prop: "other2" }, |
| | | { label: "税(销售)", prop: "other7", input: true }, |
| | | { label: "实际含税单价", prop: "other3" }, |
| | | { label: "不含税金额", prop: "other4" }, |
| | | { label: "价税合计", prop: "other3", input: true }, |
| | | { label: "描述", prop: "other8" }, |
| | | { label: "源单类型", prop: "other5" }, |
| | | { label: "源单", prop: "other6" } |
| | | { label: "产品名称", prop: "name", productName: true, isRequird: true }, |
| | | { label: "产品编号", prop: "number" }, |
| | | { label: "数量", prop: "amount", inputNumber: true, isRequird: true }, |
| | | { label: "销售单价", prop: "price", inputFloat: true }, |
| | | { label: "价税合计", prop: "total", inputFloat: true } |
| | | ] |
| | | } |
| | | } |
| | |
| | | <div class="tab-view"> |
| | | <el-tabs v-model="activeName" @tab-click="tabsClick"> |
| | | <el-tab-pane label="详情" name="first"></el-tab-pane> |
| | | <el-tab-pane label="附件管理" name="annex"></el-tab-pane> |
| | | <!-- <el-tab-pane label="附件管理" name="annex"></el-tab-pane> --> |
| | | <el-tab-pane label="服务回访单" name="followup"> |
| | | <!-- <template slot="label"> |
| | | <div>跟进记录<el-badge type="primary" :value="2"> </el-badge></div> |
| | |
| | | @addProductClick="addProductClick" |
| | | @emptyProductClick="emptyProductClick" |
| | | @recalculateProductClick="recalculateProductClick" |
| | | @clearupProduct="clearupProduct" |
| | | /> |
| | | </div> |
| | | <!-- 选择审批流程 --> |
| | |
| | | contractId: this.editCommonConfig.infomation.salesDetailsId, |
| | | quotationId: this.editCommonConfig.infomation.quotationId, |
| | | tableData: [], |
| | | productId: 1 |
| | | productId: 1, |
| | | isNoProduct: true |
| | | } |
| | | }, |
| | | created() { |
| | |
| | | this.$refs[formName].validate((valid) => { |
| | | if (valid) { |
| | | console.log(this.editConfig.infomation) |
| | | const params = this.saveParams() |
| | | console.log(params) |
| | | if (this.editConfig.title === "新建") { |
| | | getAddServiceContract(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.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 { |
| | | getUpdateServiceContract(params).then((res) => { |
| | | console.log(res) |
| | | this.editConfig.visible = false |
| | | if (res.code === 200) { |
| | | this.$message.success("编辑成功") |
| | | this.$parent.getData() |
| | | } |
| | | }) |
| | | const params = this.saveParams() |
| | | console.log(params) |
| | | if (this.editConfig.title === "新建") { |
| | | getAddServiceContract(params).then((res) => { |
| | | console.log(res) |
| | | this.editConfig.visible = false |
| | | if (res.code === 200) { |
| | | this.$message.success("添加成功") |
| | | this.$parent.getData() |
| | | } |
| | | }) |
| | | } else { |
| | | getUpdateServiceContract(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") |
| | |
| | | if (this.editConfig.title === "新建") { |
| | | this.tableData = [ |
| | | { |
| | | id: 1, |
| | | Amount: 0, |
| | | IsSale: true, |
| | | MaterialMode: "", |
| | | MinInventory: 0, |
| | | Name: "", |
| | | Number: "", |
| | | PurchaseType: "", |
| | | SalePrice: 0, |
| | | Unit: "" |
| | | productId: this.productId, |
| | | id: 0, |
| | | amount: 0, |
| | | desc: "", |
| | | name: "", |
| | | number: "", |
| | | price: 0, |
| | | total: 0 |
| | | } |
| | | ] |
| | | } else { |
| | | this.tableData = this.editConfig.infomation.products |
| | | this.tableData.map((item, index) => { |
| | | item.productId = index + 1 |
| | | }) |
| | | } |
| | | this.productTableList = { |
| | | tableData: this.tableData, |
| | | tableColumn: [ |
| | | { label: "#", prop: "id", width: 40 }, |
| | | { label: "产品名称", prop: "Name", input: true, isRequird: true }, |
| | | { label: "产品编号", prop: "Number" }, |
| | | { label: "服务开始日", prop: "other5", date: true, isRequird: true, min: 100 }, |
| | | { label: "服务到期日", prop: "other6", date: true, isRequird: true, min: 100 }, |
| | | { label: "数量", prop: "Amount", input: true, isRequird: true }, |
| | | { label: "销售单价", prop: "Unit", input: true }, |
| | | { label: "价税合计", prop: "total", input: true }, |
| | | { label: "描述", prop: "other8" } |
| | | { label: "#", prop: "productId", width: 40 }, |
| | | { label: "产品名称", prop: "name", productName: true, isRequird: true }, |
| | | { label: "产品编号", prop: "number" }, |
| | | { label: "数量", prop: "amount", inputNumber: true, isRequird: true }, |
| | | { label: "销售单价", prop: "price", inputFloat: true }, |
| | | { label: "价税合计", prop: "total", inputFloat: true } |
| | | ] |
| | | } |
| | | }, |
| | | // 产品列表输入 |
| | | inputContent(val, prop, row) { |
| | | console.log("aaaaaaaa") |
| | | console.log(val, prop) |
| | | this.productId = row.id |
| | | this.productId = row.productId |
| | | this.tableData.map((item) => { |
| | | if (item.id === row.id) { |
| | | if (item.productId === row.productId) { |
| | | item[prop] = val |
| | | } |
| | | }) |
| | | console.log(this.tableData) |
| | | }, |
| | | // 产品新增 |
| | | addProductClick() { |
| | | this.productId++ |
| | | this.tableData.push({ |
| | | id: this.productId, |
| | | Amount: 0, |
| | | IsSale: true, |
| | | MaterialMode: "", |
| | | MinInventory: 0, |
| | | Name: "", |
| | | Number: "", |
| | | PurchaseType: "", |
| | | SalePrice: 0, |
| | | Unit: "" |
| | | productId: this.productId, |
| | | id: 0, |
| | | amount: 0, |
| | | desc: "", |
| | | name: "", |
| | | number: "", |
| | | price: 0, |
| | | total: 0 |
| | | }) |
| | | this.showSummary.show = true |
| | | }, |
| | | // 产品清空 |
| | | emptyProductClick() { |
| | | this.productId = 1 |
| | | this.tableData = [ |
| | | { |
| | | id: 1, |
| | | Amount: 0, |
| | | IsSale: true, |
| | | MaterialMode: "", |
| | | MinInventory: 0, |
| | | Name: "", |
| | | Number: "", |
| | | PurchaseType: "", |
| | | SalePrice: 0, |
| | | Unit: "" |
| | | productId: this.productId, |
| | | id: 0, |
| | | amount: 0, |
| | | desc: "", |
| | | name: "", |
| | | number: "", |
| | | price: 0, |
| | | total: 0 |
| | | } |
| | | ] |
| | | this.productTableList.tableData = this.tableData |
| | |
| | | }, |
| | | setTableForm() { |
| | | this.productTableList = { |
| | | tableData: [ |
| | | { |
| | | id: "1", |
| | | productName: "上海有限公司", |
| | | other0: "ZDYBD03-1", |
| | | other1: "12", |
| | | other2: "5.00", |
| | | other4: "3.00", |
| | | other3: "2.00" |
| | | } |
| | | ], |
| | | tableData: this.detailConfig.infomation.products, |
| | | tableColumn: [ |
| | | { label: "#", prop: "id", width: 40 }, |
| | | { label: "含税单价", prop: "other9", input: true }, |
| | | { label: "产品名称", prop: "productName", input: true, isRequird: true }, |
| | | { label: "产品编号", prop: "other0" }, |
| | | { label: "数量", prop: "other1", input: true, isRequird: true }, |
| | | { label: "折扣率(%)", prop: "other6", input: true }, |
| | | { label: "不含税单价", prop: "other7", input: true }, |
| | | { label: "折扣额", prop: "other2" }, |
| | | { label: "税(销售)", prop: "other7", input: true }, |
| | | { label: "实际含税单价", prop: "other3" }, |
| | | { label: "不含税金额", prop: "other4" }, |
| | | { label: "价税合计", prop: "other3", input: true }, |
| | | { label: "描述", prop: "other8" }, |
| | | { label: "源单类型", prop: "other5" }, |
| | | { label: "源单", prop: "other6" } |
| | | { label: "产品名称", prop: "name", productName: true, isRequird: true }, |
| | | { label: "产品编号", prop: "number" }, |
| | | { label: "数量", prop: "amount", inputNumber: true, isRequird: true }, |
| | | { label: "销售单价", prop: "price", inputFloat: true }, |
| | | { label: "价税合计", prop: "total", inputFloat: true } |
| | | ] |
| | | } |
| | | } |
| | |
| | | <div class="tab-view"> |
| | | <el-tabs v-model="activeName" @tab-click="tabsClick"> |
| | | <el-tab-pane label="详情" name="first"></el-tab-pane> |
| | | <el-tab-pane label="附件管理" name="annex"> |
| | | <!-- <template slot="label"> |
| | | <!-- <el-tab-pane label="附件管理" name="annex"> --> |
| | | <!-- <template slot="label"> |
| | | <div>跟进记录<el-badge type="primary" :value="2"> </el-badge></div> |
| | | </template> --> |
| | | </el-tab-pane> |
| | | <!-- </el-tab-pane> --> |
| | | </el-tabs> |
| | | </div> |
| | | <div v-if="activeName === 'first'" class="detail"> |