| | |
| | | </div> |
| | | </div> |
| | | <!-- 列表 --> |
| | | <div v-if="listButton" class="gray btn-icon" @click="listBtnClick"> |
| | | <div v-if="listButton" class="btn-icon" @click="listBtnClick"> |
| | | <i class="el-icon-tickets"></i> |
| | | </div> |
| | | <!-- 地图 --> |
| | | <div v-if="mapButton" class="gray btn-icon" @click="mapBtnClick"> |
| | | <div v-if="mapButton" class="btn-icon" @click="mapBtnClick"> |
| | | <i class="el-icon-location-information"></i> |
| | | </div> |
| | | <!-- 统计 --> |
| | | <div v-if="statistics" class="gray btn-icon" @click="statisticsBtnClick"> |
| | | <div v-if="statistics" class="btn-icon" @click="statisticsBtnClick"> |
| | | <i class="el-icon-data-line"></i> |
| | | </div> |
| | | <!-- 客户漏斗 --> |
| | | <div v-if="customFunnel" class="btn-icon" @click="statisticsBtnClick" style="color: #666"> |
| | | <i class="el-icon-postcard" title="客户漏斗"></i> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | default: false |
| | | }, |
| | | statistics: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | customFunnel: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | |
| | | font-size: 20px; |
| | | border-radius: 4px; |
| | | color: rgb(0, 102, 255); |
| | | background-color: #f2f4fb; |
| | | } |
| | | .view-scope { |
| | | display: flex; |
| | |
| | | <div class="high-icon"><i class="el-icon-news"></i></div> |
| | | <div>平铺查找</div> |
| | | </div> |
| | | <div v-if="labelSearch" class="other-search-label" @click="labelSearchClick"> |
| | | <div class="high-icon"><i class="el-icon-discount"></i></div> |
| | | <div>标签查找</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div v-if="isTileSearch" class="search-bottom"> |
| | |
| | | searchOptions: { |
| | | type: Array, |
| | | default: () => [] |
| | | }, |
| | | labelSearch: { |
| | | type: Boolean, |
| | | default: false |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | // queryClassOptions: [ |
| | | // { value: "1", label: "全部" }, |
| | | // { value: "2", label: "广告宣传" }, |
| | | // { value: "3", label: "跟进中" }, |
| | | // { value: "4", label: "失败关闭" } |
| | | // ], |
| | | queryClassValue: this.queryClass, |
| | | searchInput: "", |
| | | searchSelValue: this.searchSel, |
| | | // searchOptions: [ |
| | | // { value: "1", label: "客户名称" }, |
| | | // { value: "2", label: "销售线索编号" }, |
| | | // { value: "3", label: "联系人姓名" }, |
| | | // { value: "4", label: "手机号码" }, |
| | | // { value: "5", label: "商机来源" }, |
| | | // { value: "6", label: "省份" }, |
| | | // { value: "7", label: "城市" }, |
| | | // { value: "8", label: "负责人" } |
| | | // ], |
| | | isTileSearch: false, |
| | | tileSearchData: [ |
| | | { |
| | |
| | | tileSearchClick() { |
| | | this.isTileSearch = !this.isTileSearch |
| | | }, |
| | | labelSearchClick() {}, |
| | | // 删除 |
| | | handleClick(row) { |
| | | console.log(row) |
| | |
| | | font-size: 18px; |
| | | } |
| | | } |
| | | .other-search-tile { |
| | | .other-search-tile, |
| | | .other-search-label { |
| | | display: flex; |
| | | margin-left: 20px; |
| | | .high-icon { |
| | |
| | | tooltip-effect="dark" |
| | | style="width: 100%" |
| | | :lazy="tableList.lazy" |
| | | :show-summary="showSummary.show" |
| | | :summary-method="getSummaries" |
| | | :span-method="arraySpanMethod" |
| | | @selection-change="handleSelectionChange" |
| | | :header-cell-style="{ background: '#ECF4FF', color: '#666' }" |
| | | > |
| | | <el-table-column type="selection" width="55"> </el-table-column> |
| | | <el-table-column type="selection" width="40"> </el-table-column> |
| | | <el-table-column |
| | | v-for="(item, i) in tableList.tableColumn" |
| | | :key="i" |
| | |
| | | :min-width="item.min" |
| | | sortable |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span v-if="item.price">{{ "¥" + number_format(scope.row[item.prop], 2, ".", ",") }}</span> |
| | | <span v-else>{{ scope.row[item.prop] }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <slot name="tableButton" /> |
| | | </el-table> |
| | |
| | | ] |
| | | } |
| | | } |
| | | }, |
| | | showSummary: { |
| | | type: Object, |
| | | default: () => { |
| | | return { |
| | | show: false, |
| | | sumProp: [], |
| | | mergeNumber: 1 |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | data() { |
| | | return {} |
| | | }, |
| | | computed: { |
| | | maxHeight() { |
| | | if (this.tableList.height) { |
| | | return `calc(100vh - ${this.tableList.height})` |
| | | } |
| | | return undefined |
| | | } |
| | | }, |
| | | computed: {}, |
| | | methods: { |
| | | handleReserve(row) { |
| | | return row._id ? row._id : row.id |
| | | }, |
| | | handleSelectionChange(val) { |
| | | this.$emit("getSelectArray", val) |
| | | }, |
| | | // 行合并 |
| | | arraySpanMethod() { |
| | | if (this.showSummary.show) { |
| | | this.$nextTick(() => { |
| | | if (this.$refs.table.$el) { |
| | | var current = this.$refs.table.$el |
| | | .querySelector(".el-table__footer-wrapper") |
| | | .querySelector(".el-table__footer") |
| | | var cell = current.rows[0].cells |
| | | for (let i = 0; i < this.showSummary.mergeNumber; i++) { |
| | | cell[i].style.display = "none" |
| | | } |
| | | cell[this.showSummary.mergeNumber].classList.remove("is-left") |
| | | cell[this.showSummary.mergeNumber].colSpan = this.showSummary.mergeNumber.toString() |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | // 金额合计 |
| | | getSummaries(param) { |
| | | if (this.showSummary.show) { |
| | | const { columns, data } = param |
| | | console.log(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 + 1] = 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) |
| | | sums[index + 1] |
| | | } |
| | | }) |
| | | return sums |
| | | } |
| | | }, |
| | | //定义number_format方法 |
| | | number_format(number, decimals, dec_point, thousands_sep) { |
| | | decimals = 2 //这里默认设置保留两位小数,也可以注释这句采用传入的参数 |
| | | /* |
| | | * 参数说明: |
| | | * number:要格式化的数字 |
| | | * decimals:保留几位小数 |
| | | * dec_point:小数点符号 |
| | | * thousands_sep:千分位符号 |
| | | * */ |
| | | number = (number + "").replace(/[^0-9+-Ee.]/g, "") |
| | | var n = !isFinite(+number) ? 0 : +number, |
| | | prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), |
| | | sep = typeof thousands_sep === "undefined" ? "," : thousands_sep, |
| | | dec = typeof dec_point === "undefined" ? "." : dec_point |
| | | var s = n.toString().split(".") |
| | | var re = /(-?\d+)(\d{3})/ |
| | | while (re.test(s[0])) { |
| | | s[0] = s[0].replace(re, "$1" + sep + "$2") |
| | | } |
| | | if ((s[1] || "").length < prec) { |
| | | s[1] = s[1] || "" |
| | | s[1] += new Array(prec - s[1].length + 1).join("0") |
| | | } else { |
| | | s[1] = s[1].substring(0, prec) //小数点位数超出长度时截取前面的位数 |
| | | } |
| | | return s.join(dec) |
| | | } |
| | | } |
| | | } |
| | |
| | | margin-right: 10px; |
| | | margin-bottom: 40px; |
| | | } |
| | | ::v-deep { |
| | | .el-table__footer-wrapper tbody td.el-table__cell { |
| | | background-color: #fff; |
| | | text-align: right; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | salesHead: [{ required: true, message: "请选择销售负责人", trigger: "change" }], |
| | | approvalOpinion: [{ required: true, message: "请输入审批意见", trigger: "blur" }] |
| | | }, |
| | | businessSourceOptions: [ |
| | | { value: "1", label: "后台注册" }, |
| | | { value: "2", label: "代理商客户" }, |
| | | { value: "3", label: "电话陌生拜访" }, |
| | | { value: "4", label: "直接访问" }, |
| | | { value: "5", label: "项目合作" }, |
| | | { value: "6", label: "个人自找" }, |
| | | { value: "7", label: "二次销售" }, |
| | | { value: "8", label: "公司电话" } |
| | | ], |
| | | salesHeadOptions: [ |
| | | { value: "1", label: "BOSS" }, |
| | | { value: "2", label: "Mia" }, |
| | |
| | | <template> |
| | | <div class="contract-manage"> |
| | | <SearchCommonView ref="searchCommonView" :query-class-options="queryClassOptions" :search-options="searchOptions" /> |
| | | <SearchCommonView |
| | | ref="searchCommonView" |
| | | :label-search="true" |
| | | :query-class-options="queryClassOptions" |
| | | :search-options="searchOptions" |
| | | /> |
| | | <div class="btn-pager"> |
| | | <PublicFunctionBtnView |
| | | :duplicate-check="true" |
| | | :list-button="true" |
| | | :map-button="true" |
| | | :statistics="true" |
| | | :receive="false" |
| | | :submit-approval="true" |
| | | ::statistics="true" |
| | | :operates-list="operatesList" |
| | | /> |
| | | <PagerView class="page" /> |
| | |
| | | <el-table-column label="操作" width="100"> |
| | | <template slot-scope="scope"> |
| | | <el-button @click="handleClick(scope.row)" type="text" size="small">编辑</el-button> |
| | | <el-button type="text" size="small">跟进</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </template> |
| | | </TableCommonView> |
| | | <!-- 新建/编辑 --> |
| | | <AddSalesLeadDialog v-if="editSalesLeadConfig.visible" :edit-sales-lead-config="editSalesLeadConfig" /> |
| | | <AddSalesLeadDialog v-if="editConfig.visible" :edit-sales-lead-config="editConfig" /> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | tableList: {}, |
| | | queryClassOptions: [ |
| | | { value: "1", label: "全部" }, |
| | | { value: "2", label: "广告宣传" }, |
| | | { value: "3", label: "跟进中" }, |
| | | { value: "4", label: "失败关闭" } |
| | | { value: "2", label: "已批准" }, |
| | | { value: "3", label: "审批中" }, |
| | | { value: "4", label: "未提交" }, |
| | | { value: "3", label: "已驳回" }, |
| | | { value: "4", label: "已拒绝" } |
| | | ], |
| | | searchOptions: [], |
| | | operatesList: [ |
| | |
| | | { id: "5", name: "更改创建人" }, |
| | | { id: "6", name: "树结构设置" }, |
| | | { id: "7", name: "审批设置" }, |
| | | { id: "8", name: "公海参数设置" } |
| | | { id: "8", name: "恢复预设列宽" } |
| | | ], |
| | | editSalesLeadConfig: { |
| | | editConfig: { |
| | | visible: false, |
| | | title: "新建", |
| | | infomation: {} |
| | |
| | | this.tableList = { |
| | | tableInfomation: [ |
| | | { |
| | | customName: "123123", |
| | | customType: "普通客户", |
| | | salesHead: "系统管理员", |
| | | modifyTime: "2023-0703 11:22:12", |
| | | customerSize: "499以上", |
| | | importantLevel: "A类客户", |
| | | customNumber: "AC651", |
| | | customStatus: "潜在客户", |
| | | productName: "自动打印机", |
| | | startDate: "2023-06-27", |
| | | endDate: "2024-07-15" |
| | | documentNumber: "ZDYB02-2", |
| | | owner: "系统管理员", |
| | | approvalStatus: "审批中", |
| | | creator: "系统管理员", |
| | | createTime: "2023-0703 11:22:12" |
| | | } |
| | | ], |
| | | tableColumn: [ |
| | | { label: "客户名称", prop: "customName", min: 120 }, // 客户名称 |
| | | { label: "客户类型", prop: "customType", min: 90 }, // 客户类型 |
| | | { label: "销售负责人", prop: "salesHead" }, // 销售负责人 |
| | | { label: "修改时间", prop: "modifyTime", min: 100 }, // 修改时间 |
| | | { label: "客户规模", prop: "customerSize" }, // 客户规模 |
| | | { label: "重要级别", prop: "importantLevel" }, // 重要级别 |
| | | { label: "客户编号", prop: "customNumber" }, // 客户编号 |
| | | { label: "客户状态", prop: "customStatus" }, // 客户状态 |
| | | { label: "产品名称", prop: "productName" }, // 产品名称 |
| | | { label: "服务开始日期", prop: "startDate" }, // 服务开始日期 |
| | | { label: "服务到期日", prop: "endDate" } // 服务到期日 |
| | | { label: "单据编号", prop: "documentNumber", min: 120 }, |
| | | { label: "负责人", prop: "owner", min: 90 }, |
| | | { label: "审批状态", prop: "approvalStatus" }, |
| | | { label: "创建人", prop: "creator", min: 100 }, |
| | | { label: "创建时间", prop: "createTime" } |
| | | ] |
| | | } |
| | | this.searchOptions = [] |
| | |
| | | }, |
| | | // 新建 |
| | | addBtnClick() { |
| | | this.editSalesLeadConfig.visible = true |
| | | this.editSalesLeadConfig.title = "新建" |
| | | this.editSalesLeadConfig.infomation = { |
| | | this.editConfig.visible = true |
| | | this.editConfig.title = "新建" |
| | | this.editConfig.infomation = { |
| | | customName: "", |
| | | saleLeadNumber: "LEA50", |
| | | contactName: "", |
| | |
| | | // 编辑 |
| | | handleClick(row) { |
| | | console.log(row) |
| | | this.editSalesLeadConfig.visible = true |
| | | this.editSalesLeadConfig.title = "编辑" |
| | | this.editSalesLeadConfig.infomation = { |
| | | this.editConfig.visible = true |
| | | this.editConfig.title = "编辑" |
| | | this.editConfig.infomation = { |
| | | customName: row.customName, |
| | | saleLeadNumber: row.saleLeadNumber, |
| | | contactName: row.contactName, |
New file |
| | |
| | | <template> |
| | | <div class="add-quotation"> |
| | | <el-dialog |
| | | :title="editCommonConfig.title + '销售总单'" |
| | | :visible.sync="editConfig.visible" |
| | | :width="dialogWidth" |
| | | :before-close="handleClose" |
| | | > |
| | | <el-form |
| | | ref="form" |
| | | :model="editConfig.infomation" |
| | | :rules="rules" |
| | | label-position="right" |
| | | label-width="308px" |
| | | size="mini" |
| | | > |
| | | <!-- 信息 --> |
| | | <div class="basic-info"> |
| | | <!-- 基本信息 --> |
| | | <div v-if="isUnflod" class="basic-info-title">基本信息</div> |
| | | <div class="basic-info-view"> |
| | | <el-row> |
| | | <el-col v-if="isUnflod" :span="12"> |
| | | <el-form-item label="客户名称" prop="customName"> |
| | | <div class="custom-name"> |
| | | <el-input v-model="editConfig.infomation.customName"></el-input> |
| | | <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="选择"></i></div> |
| | | <div class="common-select-btn"><i class="el-icon-edit" title="编辑"></i></div> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col v-if="isUnflod" :span="12"> |
| | | <el-form-item label="单据编号" prop="documentNumber"> |
| | | <el-input v-model="editConfig.infomation.documentNumber"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col v-if="isUnflod" :span="12"> |
| | | <el-form-item label="负责人" prop="owner"> |
| | | <el-select v-model="editConfig.infomation.owner" placeholder="请选择" size="mini" style="width: 63%"> |
| | | <el-option v-for="item in ownerOptions" :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="serviceStartTime"> |
| | | <el-date-picker v-model="editConfig.infomation.serviceStartTime" type="date" placeholder="选择日期"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="服务截止时间" prop="serviceDeadline"> |
| | | <el-date-picker v-model="editConfig.infomation.serviceDeadline" type="date" placeholder="选择日期"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="合同金额" prop="contractAmount"> |
| | | <el-input v-model="editConfig.infomation.contractAmount"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <!-- 附件信息 --> |
| | | <div v-if="isUnflod" class="basic-info-title">附件信息</div> |
| | | <div v-if="isUnflod" class="basic-info-view"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="附件" prop=""> |
| | | <div class="annex-view"> |
| | | <div @click="addAnnexClick">添加</div> |
| | | <div class="setFormat" @click="setFormatClick">设置允许上传的文件格式</div> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </div> |
| | | <!-- 展开收起 --> |
| | | <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> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button type="primary" size="small" @click="editConfig.visible = false">保存</el-button> |
| | | <el-button size="small" @click="editConfig.visible = false">取消</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: "QuotationDialog", |
| | | props: { |
| | | editCommonConfig: { |
| | | type: Object, |
| | | default: () => { |
| | | return { |
| | | visible: false, |
| | | title: "新建", |
| | | infomation: { |
| | | customName: "", |
| | | documentNumber: "AC6521", |
| | | owner: "", |
| | | serviceStartTime: "", |
| | | serviceDeadline: "", |
| | | contractAmount: "" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | components: {}, |
| | | computed: {}, |
| | | data() { |
| | | return { |
| | | dialogWidth: "80%", |
| | | editConfig: this.editCommonConfig, |
| | | rules: { |
| | | documentNumber: [{ required: true, message: "请输入", trigger: "blur" }], |
| | | owner: [{ required: true, message: "请选择", trigger: "change" }] |
| | | }, |
| | | ownerOptions: [ |
| | | // 负责人 |
| | | { value: "1", label: "BOSS" }, |
| | | { value: "2", label: "Mia" }, |
| | | { value: "3", label: "财务" }, |
| | | { value: "4", label: "市场" }, |
| | | { value: "5", label: "系统管理员" }, |
| | | { value: "6", label: "销售" }, |
| | | { value: "7", label: "销售总监" } |
| | | ], |
| | | unflodCollapseStr: "收起", |
| | | isUnflod: true |
| | | } |
| | | }, |
| | | created() {}, |
| | | methods: { |
| | | handleClose() { |
| | | this.editConfig.visible = false |
| | | }, |
| | | // 添加附件 |
| | | addAnnexClick() {}, |
| | | // 设置允许上传文件格式 |
| | | setFormatClick() {}, |
| | | // 展开收起 |
| | | unflodCollapseClick() { |
| | | if (this.unflodCollapseStr === "收起") { |
| | | this.unflodCollapseStr = "展开更多栏目" |
| | | this.isUnflod = false |
| | | } else { |
| | | this.unflodCollapseStr = "收起" |
| | | this.isUnflod = true |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <!-- Add "scoped" attribute to limit CSS to this component only --> |
| | | <style lang="scss" scoped> |
| | | .add-quotation { |
| | | .basic-info { |
| | | .basic-info-title { |
| | | background-color: #f4f8fe; |
| | | padding-left: 10px; |
| | | font-size: 15px; |
| | | font-weight: bold; |
| | | color: #666; |
| | | height: 42px; |
| | | line-height: 42px; |
| | | } |
| | | .basic-info-view { |
| | | margin-top: 10px; |
| | | padding-right: 40px; |
| | | .custom-name { |
| | | display: flex; |
| | | .common-select-btn { |
| | | margin-left: 5px; |
| | | font-size: 18px; |
| | | } |
| | | } |
| | | } |
| | | .address-view { |
| | | margin-top: 10px; |
| | | padding-right: 40px; |
| | | } |
| | | .annex-view { |
| | | display: flex; |
| | | color: #6166d3; |
| | | .setFormat { |
| | | margin-left: 10px; |
| | | } |
| | | } |
| | | } |
| | | .unflod-collapse { |
| | | display: flex; |
| | | height: 30px; |
| | | justify-content: center; |
| | | align-items: center; |
| | | color: #6166d3; |
| | | } |
| | | .dialog-footer { |
| | | background-color: #f5f5f5; |
| | | height: 55px; |
| | | line-height: 55px; |
| | | } |
| | | } |
| | | ::v-deep { |
| | | .el-dialog__header { |
| | | padding: 12.5px 10px; |
| | | border-bottom: 1px solid #e5e5e5; |
| | | .el-dialog__title { |
| | | font-size: 15px; |
| | | color: #323232; |
| | | font-weight: bold; |
| | | } |
| | | } |
| | | .el-dialog__body { |
| | | padding: 0px; |
| | | } |
| | | .el-dialog__footer { |
| | | padding: 0px; |
| | | text-align: center; |
| | | box-sizing: border-box; |
| | | border-top: 1px solid #dadee5; |
| | | } |
| | | .product-view { |
| | | .el-form-item__label { |
| | | padding: 0; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <div class="master-order"> |
| | | <SearchCommonView ref="searchCommonView" :query-class-options="queryClassOptions" :search-options="searchOptions" /> |
| | | <div class="btn-pager"> |
| | | <PublicFunctionBtnView |
| | | :duplicate-check="true" |
| | | :list-button="true" |
| | | :map-button="true" |
| | | :statistics="true" |
| | | :operates-list="operatesList" |
| | | /> |
| | | <PublicFunctionBtnView :operates-list="operatesList" /> |
| | | <PagerView class="page" /> |
| | | </div> |
| | | <TableCommonView ref="tableListRef" :table-list="tableList"> |
| | | <TableCommonView ref="tableListRef" :show-summary="showSummary" :table-list="tableList"> |
| | | <template slot="tableButton"> |
| | | <el-table-column label="操作" width="100"> |
| | | <el-table-column label="操作" width="60"> |
| | | <template slot-scope="scope"> |
| | | <el-button @click="handleClick(scope.row)" type="text" size="small">编辑</el-button> |
| | | <el-button type="text" size="small">跟进</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </template> |
| | | </TableCommonView> |
| | | <!-- 新建/编辑 --> |
| | | <AddSalesLeadDialog v-if="editSalesLeadConfig.visible" :edit-sales-lead-config="editSalesLeadConfig" /> |
| | | <AddMasterOrderDialog v-if="editConfig.visible" :edit-common-config="editConfig" /> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | import PublicFunctionBtnView from "@/components/makepager/PublicFunctionBtnView" |
| | | import PagerView from "@/components/makepager/PagerView" |
| | | import TableCommonView from "@/components/makepager/TableCommonView" |
| | | import AddSalesLeadDialog from "@/views/custom/salesLead/AddSalesLeadDialog" |
| | | import AddMasterOrderDialog from "@/views/sales/masterOrder/AddMasterOrderDialog" |
| | | |
| | | export default { |
| | | name: "MasterOrder", |
| | |
| | | PublicFunctionBtnView, |
| | | PagerView, |
| | | TableCommonView, |
| | | AddSalesLeadDialog |
| | | AddMasterOrderDialog |
| | | }, |
| | | computed: { |
| | | searchCommonHeight() { |
| | | return this.$refs.searchCommonView.offsetHeight |
| | | } |
| | | }, |
| | | computed: {}, |
| | | data() { |
| | | return { |
| | | tableList: {}, |
| | | queryClassOptions: [ |
| | | { value: "1", label: "全部" }, |
| | | { value: "2", label: "广告宣传" }, |
| | | { value: "3", label: "跟进中" }, |
| | | { value: "4", label: "失败关闭" } |
| | | { value: "2", label: "已批准" }, |
| | | { value: "3", label: "审批中" }, |
| | | { value: "4", label: "未提交" }, |
| | | { value: "5", label: "已驳回" }, |
| | | { value: "6", label: "已拒绝" } |
| | | ], |
| | | searchOptions: [], |
| | | operatesList: [ |
| | |
| | | { id: "5", name: "更改创建人" }, |
| | | { id: "6", name: "树结构设置" }, |
| | | { id: "7", name: "审批设置" }, |
| | | { id: "8", name: "公海参数设置" } |
| | | { id: "8", name: "恢复预设列宽" } |
| | | ], |
| | | editSalesLeadConfig: { |
| | | editConfig: { |
| | | visible: false, |
| | | title: "新建", |
| | | infomation: {} |
| | | }, |
| | | showSummary: { |
| | | show: true, |
| | | sumProp: ["contractAmount"], |
| | | mergeNumber: 5 |
| | | } |
| | | } |
| | | }, |
| | |
| | | this.tableList = { |
| | | tableInfomation: [ |
| | | { |
| | | customName: "123123", |
| | | customType: "普通客户", |
| | | salesHead: "系统管理员", |
| | | modifyTime: "2023-0703 11:22:12", |
| | | customerSize: "499以上", |
| | | importantLevel: "A类客户", |
| | | customNumber: "AC651", |
| | | customStatus: "潜在客户", |
| | | productName: "自动打印机", |
| | | startDate: "2023-06-27", |
| | | endDate: "2024-07-15" |
| | | documentNumber: "ZDYBD03-1", |
| | | customName: "张三", |
| | | serviceStartTime: "2023-0703 11:22:12", |
| | | serviceDeadline: "2023-0703 11:22:12", |
| | | contractAmount: 13000.0, |
| | | owner: "系统管理员", |
| | | approvalStatus: "未提交" |
| | | }, |
| | | { |
| | | documentNumber: "", |
| | | customName: "", |
| | | serviceStartTime: "", |
| | | serviceDeadline: "", |
| | | contractAmount: 13000.0, |
| | | owner: "", |
| | | approvalStatus: "" |
| | | } |
| | | ], |
| | | tableColumn: [ |
| | | { label: "单据编号", prop: "documentNumber", min: 120 }, // 单据编号 |
| | | { label: "客户名称", prop: "customName", min: 120 }, // 客户名称 |
| | | { label: "客户类型", prop: "customType", min: 90 }, // 客户类型 |
| | | { label: "销售负责人", prop: "salesHead" }, // 销售负责人 |
| | | { label: "修改时间", prop: "modifyTime", min: 100 }, // 修改时间 |
| | | { label: "客户规模", prop: "customerSize" }, // 客户规模 |
| | | { label: "重要级别", prop: "importantLevel" }, // 重要级别 |
| | | { label: "客户编号", prop: "customNumber" }, // 客户编号 |
| | | { label: "客户状态", prop: "customStatus" }, // 客户状态 |
| | | { label: "产品名称", prop: "productName" }, // 产品名称 |
| | | { label: "服务开始日期", prop: "startDate" }, // 服务开始日期 |
| | | { label: "服务到期日", prop: "endDate" } // 服务到期日 |
| | | { label: "服务开始时间", prop: "serviceStartTime", min: 90 }, // 服务开始时间 |
| | | { label: "服务截止时间", prop: "serviceDeadline" }, // 服务截止时间 |
| | | { label: "合同金额", prop: "contractAmount", min: 100 }, // 合同金额 |
| | | { label: "负责人", prop: "owner" }, // 负责人 |
| | | { label: "审批状态", prop: "approvalStatus" } // 审批状态 |
| | | ] |
| | | } |
| | | this.searchOptions = [] |
| | |
| | | }, |
| | | // 新建 |
| | | addBtnClick() { |
| | | this.editSalesLeadConfig.visible = true |
| | | this.editSalesLeadConfig.title = "新建" |
| | | this.editSalesLeadConfig.infomation = { |
| | | this.editConfig.visible = true |
| | | this.editConfig.title = "新建" |
| | | this.editConfig.infomation = { |
| | | customName: "", |
| | | saleLeadNumber: "LEA50", |
| | | contactName: "", |
| | | contactDuties: "", |
| | | phoneNumber: "", |
| | | businessStatus: "新建", |
| | | businessSource: "1", |
| | | documentNumber: "AC6521", |
| | | owner: "", |
| | | position: "", |
| | | map: "", |
| | | country: "1", |
| | | province: "1", |
| | | city: "1", |
| | | region: "1", |
| | | address: "" |
| | | serviceStartTime: "", |
| | | serviceDeadline: "", |
| | | contractAmount: "" |
| | | } |
| | | }, |
| | | // 编辑 |
| | | handleClick(row) { |
| | | console.log(row) |
| | | this.editSalesLeadConfig.visible = true |
| | | this.editSalesLeadConfig.title = "编辑" |
| | | this.editSalesLeadConfig.infomation = { |
| | | customName: row.customName, |
| | | saleLeadNumber: row.saleLeadNumber, |
| | | contactName: row.contactName, |
| | | contactDuties: row.contactDuties, |
| | | phoneNumber: row.phoneNumber, |
| | | businessStatus: "新建", |
| | | businessSource: row.businessSource, |
| | | owner: row.owner, |
| | | position: "", |
| | | map: "", |
| | | country: "1", |
| | | province: "1", |
| | | city: "1", |
| | | region: "1", |
| | | address: "" |
| | | this.editConfig.visible = true |
| | | this.editConfig.title = "编辑" |
| | | this.editConfig.infomation = { |
| | | customName: "", |
| | | documentNumber: "AC6521", |
| | | owner: "", |
| | | serviceStartTime: "", |
| | | serviceDeadline: "", |
| | | contractAmount: "" |
| | | } |
| | | } |
| | | } |
| | |
| | | <div class="product-plan"> |
| | | <SearchCommonView ref="searchCommonView" :query-class-options="queryClassOptions" :search-options="searchOptions" /> |
| | | <div class="btn-pager"> |
| | | <PublicFunctionBtnView |
| | | :duplicate-check="true" |
| | | :list-button="true" |
| | | :map-button="true" |
| | | :statistics="true" |
| | | :operates-list="operatesList" |
| | | /> |
| | | <PublicFunctionBtnView :operates-list="operatesList" /> |
| | | <PagerView class="page" /> |
| | | </div> |
| | | <TableCommonView ref="tableListRef" :table-list="tableList"> |
| | |
| | | <el-table-column label="操作" width="100"> |
| | | <template slot-scope="scope"> |
| | | <el-button @click="handleClick(scope.row)" type="text" size="small">编辑</el-button> |
| | | <el-button type="text" size="small">跟进</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </template> |
| | | </TableCommonView> |
| | | <!-- 新建/编辑--> |
| | | <AddSalesLeadDialog v-if="editSalesLeadConfig.visible" :edit-sales-lead-config="editSalesLeadConfig" /> |
| | | <AddSalesLeadDialog v-if="editConfig.visible" :edit-sales-lead-config="editConfig" /> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | tableList: {}, |
| | | queryClassOptions: [ |
| | | { value: "1", label: "全部" }, |
| | | { value: "2", label: "广告宣传" }, |
| | | { value: "3", label: "跟进中" }, |
| | | { value: "4", label: "失败关闭" } |
| | | { value: "2", label: "已批准" }, |
| | | { value: "3", label: "审批中" }, |
| | | { value: "4", label: "未提交" }, |
| | | { value: "3", label: "已驳回" }, |
| | | { value: "4", label: "已拒绝" } |
| | | ], |
| | | searchOptions: [], |
| | | operatesList: [ |
| | |
| | | { id: "5", name: "更改创建人" }, |
| | | { id: "6", name: "树结构设置" }, |
| | | { id: "7", name: "审批设置" }, |
| | | { id: "8", name: "公海参数设置" } |
| | | { id: "8", name: "恢复预设列宽" } |
| | | ], |
| | | editSalesLeadConfig: { |
| | | editConfig: { |
| | | visible: false, |
| | | title: "新建", |
| | | infomation: {} |
| | |
| | | this.tableList = { |
| | | tableInfomation: [ |
| | | { |
| | | customName: "123123", |
| | | customType: "普通客户", |
| | | salesHead: "系统管理员", |
| | | modifyTime: "2023-0703 11:22:12", |
| | | customerSize: "499以上", |
| | | importantLevel: "A类客户", |
| | | customNumber: "AC651", |
| | | customStatus: "潜在客户", |
| | | productName: "自动打印机", |
| | | startDate: "2023-06-27", |
| | | endDate: "2024-07-15" |
| | | documentNumber: "ZDYB04-2", |
| | | owner: "系统管理员", |
| | | approvalStatus: "未提交", |
| | | creator: "系统管理员", |
| | | createTime: "2023-0703 11:22:12" |
| | | } |
| | | ], |
| | | tableColumn: [ |
| | | { label: "客户名称", prop: "customName", min: 120 }, // 客户名称 |
| | | { label: "客户类型", prop: "customType", min: 90 }, // 客户类型 |
| | | { label: "销售负责人", prop: "salesHead" }, // 销售负责人 |
| | | { label: "修改时间", prop: "modifyTime", min: 100 }, // 修改时间 |
| | | { label: "客户规模", prop: "customerSize" }, // 客户规模 |
| | | { label: "重要级别", prop: "importantLevel" }, // 重要级别 |
| | | { label: "客户编号", prop: "customNumber" }, // 客户编号 |
| | | { label: "客户状态", prop: "customStatus" }, // 客户状态 |
| | | { label: "产品名称", prop: "productName" }, // 产品名称 |
| | | { label: "服务开始日期", prop: "startDate" }, // 服务开始日期 |
| | | { label: "服务到期日", prop: "endDate" } // 服务到期日 |
| | | { label: "单据编号", prop: "documentNumber", min: 120 }, |
| | | { label: "负责人", prop: "owner", min: 90 }, |
| | | { label: "审批状态", prop: "approvalStatus" }, |
| | | { label: "创建人", prop: "creator", min: 100 }, |
| | | { label: "创建时间", prop: "createTime" } |
| | | ] |
| | | } |
| | | this.searchOptions = [] |
| | |
| | | }, |
| | | // 新建 |
| | | addBtnClick() { |
| | | this.editSalesLeadConfig.visible = true |
| | | this.editSalesLeadConfig.title = "新建" |
| | | this.editSalesLeadConfig.infomation = { |
| | | this.editConfig.visible = true |
| | | this.editConfig.title = "新建" |
| | | this.editConfig.infomation = { |
| | | customName: "", |
| | | saleLeadNumber: "LEA50", |
| | | contactName: "", |
| | |
| | | // 编辑 |
| | | handleClick(row) { |
| | | console.log(row) |
| | | this.editSalesLeadConfig.visible = true |
| | | this.editSalesLeadConfig.title = "编辑" |
| | | this.editSalesLeadConfig.infomation = { |
| | | this.editConfig.visible = true |
| | | this.editConfig.title = "编辑" |
| | | this.editConfig.infomation = { |
| | | customName: row.customName, |
| | | saleLeadNumber: row.saleLeadNumber, |
| | | contactName: row.contactName, |
New file |
| | |
| | | <template> |
| | | <div class="add-quotation"> |
| | | <el-dialog |
| | | :title="editCommonConfig.title + '报价单'" |
| | | :visible.sync="editConfig.visible" |
| | | :width="dialogWidth" |
| | | :before-close="handleClose" |
| | | > |
| | | <el-form |
| | | ref="form" |
| | | :model="editConfig.infomation" |
| | | :rules="rules" |
| | | label-position="right" |
| | | label-width="308px" |
| | | size="mini" |
| | | style="height: 60vh; overflow-x: hidden" |
| | | > |
| | | <!-- 信息 --> |
| | | <div class="basic-info"> |
| | | <!-- 基本信息 --> |
| | | <div class="basic-info-title">基本信息</div> |
| | | <div class="basic-info-view"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="客户名称" prop="customName"> |
| | | <div class="custom-name"> |
| | | <el-input v-model="editConfig.infomation.customName"></el-input> |
| | | <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="选择"></i></div> |
| | | <div class="common-select-btn"><i class="el-icon-edit" title="编辑"></i></div> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="报价编号" prop="quotationNo"> |
| | | <el-input v-model="editConfig.infomation.quotationNo"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="报价单状态" prop="quotationStatus"> |
| | | <CommonSelectView |
| | | :common-value="editConfig.infomation.quotationStatus" |
| | | :common-options="quotationStatusOptions" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="有效期至" prop="validTo"> |
| | | <el-date-picker v-model="editConfig.infomation.validTo" type="date" placeholder="选择日期"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="联系人姓名" prop="contactName"> |
| | | <div class="custom-name"> |
| | | <el-input v-model="editConfig.infomation.contactName"></el-input> |
| | | <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="选择"></i></div> |
| | | <div class="common-select-btn"><i class="el-icon-edit" title="编辑"></i></div> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="销售负责人" prop="salesHead"> |
| | | <el-select |
| | | v-model="editConfig.infomation.salesHead" |
| | | placeholder="请选择" |
| | | size="mini" |
| | | style="width: 63%" |
| | | > |
| | | <el-option |
| | | v-for="item in salesHeadOptions" |
| | | :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="salesOpportunity"> |
| | | <div class="custom-name"> |
| | | <el-input v-model="editConfig.infomation.salesOpportunity"></el-input> |
| | | <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="选择"></i></div> |
| | | <div class="common-select-btn"><i class="el-icon-edit" title="编辑"></i></div> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <!-- 条款与条件 --> |
| | | <div class="basic-info-title">条款与条件</div> |
| | | <div class="address-view"> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="条款与条件" prop="termsTreaty"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 4 }" |
| | | v-model="editConfig.infomation.termsTreaty" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <!-- 附件信息 --> |
| | | <div class="basic-info-title">附件信息</div> |
| | | <div class="basic-info-view"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="附件" prop=""> |
| | | <div class="annex-view"> |
| | | <div @click="addAnnexClick">添加</div> |
| | | <div class="setFormat" @click="setFormatClick">设置允许上传的文件格式</div> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <!-- 产品管理 --> |
| | | <div class="basic-info-title" style="display: flex"> |
| | | 产品管理 |
| | | <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> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <div class="product-view"> |
| | | <CommonFormTableView :product-table-list="productTableList" /> |
| | | </div> |
| | | <!-- 选择审批流程 --> |
| | | <div class="basic-info-title">选择审批流程</div> |
| | | <div class="basic-info-view"> |
| | | <el-row> |
| | | <el-col :span="20"> |
| | | <el-form-item label="审批流程" prop="approvalWorkflow"> |
| | | <el-select |
| | | v-model="editConfig.infomation.approvalWorkflow" |
| | | placeholder="请选择" |
| | | size="mini" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="item in approvalWorkflowOptions" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="20"> |
| | | <el-form-item label="审批步骤" prop="approvalSteps"> |
| | | <el-input v-model="editConfig.infomation.approvalSteps"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="20"> |
| | | <el-form-item label="审批人" prop="approvalPerson"> |
| | | <el-input v-model="editConfig.infomation.approvalPerson"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="20"> |
| | | <el-form-item label="审批意见" prop="approvalOpinion"> |
| | | <el-input v-model="editConfig.infomation.approvalOpinion" type="textarea" :rows="2"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </div> |
| | | </el-form> |
| | | |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button type="primary" size="small" @click="editConfig.visible = false">保并提交审批</el-button> |
| | | <el-button type="primary" size="small" @click="editConfig.visible = false">保存</el-button> |
| | | <el-button size="small" @click="editConfig.visible = false">取消</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import CommonSelectView from "@/components/makepager/CommonSelectView" |
| | | import CommonFormTableView from "@/components/makepager/CommonFormTableView" |
| | | export default { |
| | | name: "QuotationDialog", |
| | | props: { |
| | | editCommonConfig: { |
| | | type: Object, |
| | | default: () => { |
| | | return { |
| | | visible: false, |
| | | title: "新建", |
| | | infomation: { |
| | | customName: "", |
| | | quotationNo: "AC6521", |
| | | quotationStatus: "", |
| | | validTo: "", |
| | | contactName: "", |
| | | salesHead: "", |
| | | salesOpportunity: "", |
| | | termsTreaty: "", |
| | | approvalWorkflow: "", |
| | | approvalSteps: "", |
| | | approvalPerson: "", |
| | | approvalOpinion: "" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | components: { CommonSelectView, CommonFormTableView }, |
| | | computed: { |
| | | searchCommonHeight() { |
| | | return this.$refs.searchCommonView.offsetHeight |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | dialogWidth: "80%", |
| | | editConfig: this.editCommonConfig, |
| | | rules: { |
| | | customName: [{ required: true, message: "请输入", trigger: "blur" }], |
| | | quotationNo: [{ required: true, message: "请输入", trigger: "blur" }], |
| | | quotationStatus: [{ required: true, message: "请选择", trigger: "change" }], |
| | | salesHead: [{ required: true, message: "请选择负责人", trigger: "change" }] |
| | | }, |
| | | salesHeadOptions: [ |
| | | // 销售负责人 |
| | | { value: "1", label: "BOSS" }, |
| | | { value: "2", label: "Mia" }, |
| | | { value: "3", label: "财务" }, |
| | | { value: "4", label: "市场" }, |
| | | { value: "5", label: "系统管理员" }, |
| | | { value: "6", label: "销售" }, |
| | | { value: "7", label: "销售总监" } |
| | | ], |
| | | quotationStatusOptions: [], // 报价单状态 |
| | | currencyOptions: [ |
| | | { value: "1", label: "人民币(¥)" }, |
| | | { value: "2", label: "英镑(£)" }, |
| | | { value: "3", label: "欧元(€)" } |
| | | ], // 币种 |
| | | approvalWorkflowOptions: [], // 审批流程 |
| | | productTableList: { |
| | | tableData: [ |
| | | { |
| | | id: "1", |
| | | productNumber: "123", |
| | | productName: "", |
| | | startDate: "", |
| | | endDate: "2016-05-02", |
| | | number: "", |
| | | address: "" |
| | | } |
| | | ] |
| | | } |
| | | } |
| | | }, |
| | | created() {}, |
| | | methods: { |
| | | handleClose() { |
| | | this.editConfig.visible = false |
| | | }, |
| | | // 添加附件 |
| | | addAnnexClick() {}, |
| | | // 设置允许上传文件格式 |
| | | setFormatClick() {} |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <!-- Add "scoped" attribute to limit CSS to this component only --> |
| | | <style lang="scss" scoped> |
| | | .add-quotation { |
| | | .basic-info { |
| | | .basic-info-title { |
| | | background-color: #f4f8fe; |
| | | padding-left: 10px; |
| | | font-size: 15px; |
| | | font-weight: bold; |
| | | color: #666; |
| | | height: 42px; |
| | | line-height: 42px; |
| | | } |
| | | .basic-info-view { |
| | | margin-top: 10px; |
| | | padding-right: 40px; |
| | | .custom-name { |
| | | display: flex; |
| | | .common-select-btn { |
| | | margin-left: 5px; |
| | | font-size: 18px; |
| | | } |
| | | } |
| | | } |
| | | .address-view { |
| | | margin-top: 10px; |
| | | padding-right: 40px; |
| | | } |
| | | .annex-view { |
| | | display: flex; |
| | | color: #6166d3; |
| | | .setFormat { |
| | | margin-left: 10px; |
| | | } |
| | | } |
| | | } |
| | | .unflod-collapse { |
| | | display: flex; |
| | | height: 30px; |
| | | justify-content: center; |
| | | align-items: center; |
| | | color: #6166d3; |
| | | } |
| | | .dialog-footer { |
| | | background-color: #f5f5f5; |
| | | height: 55px; |
| | | line-height: 55px; |
| | | } |
| | | } |
| | | ::v-deep { |
| | | .el-dialog__header { |
| | | padding: 12.5px 10px; |
| | | border-bottom: 1px solid #e5e5e5; |
| | | .el-dialog__title { |
| | | font-size: 15px; |
| | | color: #323232; |
| | | font-weight: bold; |
| | | } |
| | | } |
| | | .el-dialog__body { |
| | | padding: 0px; |
| | | } |
| | | .el-dialog__footer { |
| | | padding: 0px; |
| | | text-align: center; |
| | | box-sizing: border-box; |
| | | border-top: 1px solid #dadee5; |
| | | } |
| | | .product-view { |
| | | .el-form-item__label { |
| | | padding: 0; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <div class="quotation"> |
| | | <SearchCommonView ref="searchCommonView" :query-class-options="queryClassOptions" :search-options="searchOptions" /> |
| | | <SearchCommonView |
| | | ref="searchCommonView" |
| | | :label-search="true" |
| | | :query-class-options="queryClassOptions" |
| | | :search-options="searchOptions" |
| | | /> |
| | | <div class="btn-pager"> |
| | | <PublicFunctionBtnView |
| | | :duplicate-check="true" |
| | | :list-button="true" |
| | | :map-button="true" |
| | | :statistics="true" |
| | | :operates-list="operatesList" |
| | | /> |
| | | <PublicFunctionBtnView :submit-approval="true" :operates-list="operatesList" /> |
| | | <PagerView class="page" /> |
| | | </div> |
| | | <TableCommonView ref="tableListRef" :table-list="tableList"> |
| | | <template slot="tableButton"> |
| | | <el-table-column label="操作" width="100"> |
| | | <el-table-column label="操作" width="60"> |
| | | <template slot-scope="scope"> |
| | | <el-button @click="handleClick(scope.row)" type="text" size="small">编辑</el-button> |
| | | <el-button type="text" size="small">跟进</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </template> |
| | | </TableCommonView> |
| | | <!-- 新建/编辑 --> |
| | | <AddSalesLeadDialog v-if="editSalesLeadConfig.visible" :edit-sales-lead-config="editSalesLeadConfig" /> |
| | | <AddQuotationDialog v-if="editConfig.visible" :edit-common-config="editConfig" /> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | import PublicFunctionBtnView from "@/components/makepager/PublicFunctionBtnView" |
| | | import PagerView from "@/components/makepager/PagerView" |
| | | import TableCommonView from "@/components/makepager/TableCommonView" |
| | | import AddSalesLeadDialog from "@/views/custom/salesLead/AddSalesLeadDialog" |
| | | import AddQuotationDialog from "@/views/sales/quotation/AddQuotationDialog" |
| | | |
| | | export default { |
| | | name: "QuotationView", |
| | |
| | | PublicFunctionBtnView, |
| | | PagerView, |
| | | TableCommonView, |
| | | AddSalesLeadDialog |
| | | AddQuotationDialog |
| | | }, |
| | | computed: { |
| | | searchCommonHeight() { |
| | |
| | | tableList: {}, |
| | | queryClassOptions: [ |
| | | { value: "1", label: "全部" }, |
| | | { value: "2", label: "广告宣传" }, |
| | | { value: "3", label: "跟进中" }, |
| | | { value: "4", label: "失败关闭" } |
| | | { value: "2", label: "今日创建" }, |
| | | { value: "3", label: "本周创建" }, |
| | | { value: "4", label: "本月创建" } |
| | | ], |
| | | searchOptions: [], |
| | | operatesList: [ |
| | |
| | | { id: "5", name: "更改创建人" }, |
| | | { id: "6", name: "树结构设置" }, |
| | | { id: "7", name: "审批设置" }, |
| | | { id: "8", name: "公海参数设置" } |
| | | { id: "8", name: "恢复预设列宽" } |
| | | ], |
| | | editSalesLeadConfig: { |
| | | editConfig: { |
| | | visible: false, |
| | | title: "新建", |
| | | infomation: {} |
| | |
| | | this.tableList = { |
| | | tableInfomation: [ |
| | | { |
| | | quotationNo: "QUO109", |
| | | customName: "123123", |
| | | customType: "普通客户", |
| | | contactName: "马里奥", |
| | | salesHead: "系统管理员", |
| | | modifyTime: "2023-0703 11:22:12", |
| | | customerSize: "499以上", |
| | | importantLevel: "A类客户", |
| | | customNumber: "AC651", |
| | | customStatus: "潜在客户", |
| | | subTotal: "¥9,499.00", |
| | | total: "¥9,499.00", |
| | | productName: "自动打印机", |
| | | startDate: "2023-06-27", |
| | | endDate: "2024-07-15" |
| | | number: "1.00", |
| | | priceTax: "¥9499.00" |
| | | } |
| | | ], |
| | | tableColumn: [ |
| | | { label: "报价单号", prop: "quotationNo", min: 90 }, // 报价单号 |
| | | { label: "客户名称", prop: "customName", min: 120 }, // 客户名称 |
| | | { label: "客户类型", prop: "customType", min: 90 }, // 客户类型 |
| | | { label: "联系人姓名", prop: "contactName", min: 90 }, // 联系人姓名 |
| | | { label: "销售负责人", prop: "salesHead" }, // 销售负责人 |
| | | { label: "修改时间", prop: "modifyTime", min: 100 }, // 修改时间 |
| | | { label: "客户规模", prop: "customerSize" }, // 客户规模 |
| | | { label: "重要级别", prop: "importantLevel" }, // 重要级别 |
| | | { label: "客户编号", prop: "customNumber" }, // 客户编号 |
| | | { label: "客户状态", prop: "customStatus" }, // 客户状态 |
| | | { label: "小计", prop: "subTotal" }, // 小计 |
| | | { label: "合计", prop: "total" }, // 合计 |
| | | { label: "产品名称", prop: "productName" }, // 产品名称 |
| | | { label: "服务开始日期", prop: "startDate" }, // 服务开始日期 |
| | | { label: "服务到期日", prop: "endDate" } // 服务到期日 |
| | | { label: "数量", prop: "number" }, // 数量 |
| | | { label: "价税合计", prop: "priceTax" } // 价税合计 |
| | | ] |
| | | } |
| | | this.searchOptions = [] |
| | |
| | | }, |
| | | // 新建 |
| | | addBtnClick() { |
| | | this.editSalesLeadConfig.visible = true |
| | | this.editSalesLeadConfig.title = "新建" |
| | | this.editSalesLeadConfig.infomation = { |
| | | this.editConfig.visible = true |
| | | this.editConfig.title = "新建" |
| | | this.editConfig.infomation = { |
| | | customName: "", |
| | | saleLeadNumber: "LEA50", |
| | | quotationNo: "AC6521", |
| | | quotationStatus: "", |
| | | validTo: "", |
| | | contactName: "", |
| | | contactDuties: "", |
| | | phoneNumber: "", |
| | | businessStatus: "新建", |
| | | businessSource: "1", |
| | | owner: "", |
| | | position: "", |
| | | map: "", |
| | | country: "1", |
| | | province: "1", |
| | | city: "1", |
| | | region: "1", |
| | | address: "" |
| | | salesHead: "", |
| | | salesOpportunity: "", |
| | | termsTreaty: "", |
| | | approvalWorkflow: "", |
| | | approvalSteps: "", |
| | | approvalPerson: "", |
| | | approvalOpinion: "" |
| | | } |
| | | }, |
| | | // 编辑 |
| | | handleClick(row) { |
| | | console.log(row) |
| | | this.editSalesLeadConfig.visible = true |
| | | this.editSalesLeadConfig.title = "编辑" |
| | | this.editSalesLeadConfig.infomation = { |
| | | customName: row.customName, |
| | | saleLeadNumber: row.saleLeadNumber, |
| | | contactName: row.contactName, |
| | | contactDuties: row.contactDuties, |
| | | phoneNumber: row.phoneNumber, |
| | | businessStatus: "新建", |
| | | businessSource: row.businessSource, |
| | | owner: row.owner, |
| | | position: "", |
| | | map: "", |
| | | country: "1", |
| | | province: "1", |
| | | city: "1", |
| | | region: "1", |
| | | address: "" |
| | | this.editConfig.visible = true |
| | | this.editConfig.title = "编辑" |
| | | this.editConfig.infomation = { |
| | | customName: "", |
| | | quotationNo: "AC6521", |
| | | quotationStatus: "", |
| | | validTo: "", |
| | | contactName: "", |
| | | salesHead: "", |
| | | salesOpportunity: "", |
| | | termsTreaty: "", |
| | | approvalWorkflow: "", |
| | | approvalSteps: "", |
| | | approvalPerson: "", |
| | | approvalOpinion: "" |
| | | } |
| | | } |
| | | } |
| | |
| | | <div class="refund-form"> |
| | | <SearchCommonView ref="searchCommonView" :query-class-options="queryClassOptions" :search-options="searchOptions" /> |
| | | <div class="btn-pager"> |
| | | <PublicFunctionBtnView |
| | | :duplicate-check="true" |
| | | :list-button="true" |
| | | :map-button="true" |
| | | :statistics="true" |
| | | :operates-list="operatesList" |
| | | /> |
| | | <PublicFunctionBtnView :receive="false" :submit-approval="true" :operates-list="operatesList" /> |
| | | <PagerView class="page" /> |
| | | </div> |
| | | <TableCommonView ref="tableListRef" :table-list="tableList"> |
| | |
| | | <el-table-column label="操作" width="100"> |
| | | <template slot-scope="scope"> |
| | | <el-button @click="handleClick(scope.row)" type="text" size="small">编辑</el-button> |
| | | <el-button type="text" size="small">跟进</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </template> |
| | | </TableCommonView> |
| | | <!-- 新建/编辑 --> |
| | | <AddSalesLeadDialog v-if="editSalesLeadConfig.visible" :edit-sales-lead-config="editSalesLeadConfig" /> |
| | | <AddSalesLeadDialog v-if="editConfig.visible" :edit-sales-lead-config="editConfig" /> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | tableList: {}, |
| | | queryClassOptions: [ |
| | | { value: "1", label: "全部" }, |
| | | { value: "2", label: "广告宣传" }, |
| | | { value: "3", label: "跟进中" }, |
| | | { value: "4", label: "失败关闭" } |
| | | { value: "2", label: "现金退款" }, |
| | | { value: "3", label: "无需发票" }, |
| | | { value: "4", label: "本月退款" } |
| | | ], |
| | | searchOptions: [], |
| | | operatesList: [ |
| | |
| | | { id: "5", name: "更改创建人" }, |
| | | { id: "6", name: "树结构设置" }, |
| | | { id: "7", name: "审批设置" }, |
| | | { id: "8", name: "公海参数设置" } |
| | | { id: "8", name: "恢复预设列宽" } |
| | | ], |
| | | editSalesLeadConfig: { |
| | | editConfig: { |
| | | visible: false, |
| | | title: "新建", |
| | | infomation: {} |
| | |
| | | this.tableList = { |
| | | tableInfomation: [ |
| | | { |
| | | customName: "123123", |
| | | customType: "普通客户", |
| | | refundOrderNo: "TKD20220118-44", |
| | | customName: "万科物料发展有限公司", |
| | | refundDate: "2022-01-18", |
| | | account: "人民币账户", |
| | | whetherInvoicing: "未开", |
| | | paymentMethod: "现金", |
| | | salesHead: "系统管理员", |
| | | modifyTime: "2023-0703 11:22:12", |
| | | customerSize: "499以上", |
| | | importantLevel: "A类客户", |
| | | customNumber: "AC651", |
| | | customStatus: "潜在客户", |
| | | productName: "自动打印机", |
| | | startDate: "2023-06-27", |
| | | endDate: "2024-07-15" |
| | | modifyTime: "202-01-18 13:11:05", |
| | | priceTax: "¥12.00" |
| | | } |
| | | ], |
| | | tableColumn: [ |
| | | { label: "客户名称", prop: "customName", min: 120 }, // 客户名称 |
| | | { label: "客户类型", prop: "customType", min: 90 }, // 客户类型 |
| | | { label: "销售负责人", prop: "salesHead" }, // 销售负责人 |
| | | { label: "修改时间", prop: "modifyTime", min: 100 }, // 修改时间 |
| | | { label: "客户规模", prop: "customerSize" }, // 客户规模 |
| | | { label: "重要级别", prop: "importantLevel" }, // 重要级别 |
| | | { label: "客户编号", prop: "customNumber" }, // 客户编号 |
| | | { label: "客户状态", prop: "customStatus" }, // 客户状态 |
| | | { label: "产品名称", prop: "productName" }, // 产品名称 |
| | | { label: "服务开始日期", prop: "startDate" }, // 服务开始日期 |
| | | { label: "服务到期日", prop: "endDate" } // 服务到期日 |
| | | { label: "退款单编号", prop: "refundOrderNo" }, |
| | | { label: "客户名称", prop: "customName", min: 120 }, |
| | | { label: "退款日期", prop: "refundDate", min: 90 }, |
| | | { label: "账户", prop: "account" }, |
| | | { label: "是否开票", prop: "whetherInvoicing", min: 100 }, |
| | | { label: "付款方式", prop: "paymentMethod" }, |
| | | { label: "销售负责人", prop: "salesHead" }, |
| | | { label: "修改时间", prop: "modifyTime" }, |
| | | { label: "价税合计", prop: "priceTax" } |
| | | ] |
| | | } |
| | | this.searchOptions = [] |
| | |
| | | }, |
| | | // 新建 |
| | | addBtnClick() { |
| | | this.editSalesLeadConfig.visible = true |
| | | this.editSalesLeadConfig.title = "新建" |
| | | this.editSalesLeadConfig.infomation = { |
| | | this.editConfig.visible = true |
| | | this.editConfig.title = "新建" |
| | | this.editConfig.infomation = { |
| | | customName: "", |
| | | saleLeadNumber: "LEA50", |
| | | contactName: "", |
| | |
| | | // 编辑 |
| | | handleClick(row) { |
| | | console.log(row) |
| | | this.editSalesLeadConfig.visible = true |
| | | this.editSalesLeadConfig.title = "编辑" |
| | | this.editSalesLeadConfig.infomation = { |
| | | this.editConfig.visible = true |
| | | this.editConfig.title = "编辑" |
| | | this.editConfig.infomation = { |
| | | customName: row.customName, |
| | | saleLeadNumber: row.saleLeadNumber, |
| | | contactName: row.contactName, |
New file |
| | |
| | | <template> |
| | | <div class="add-sales-details"> |
| | | <el-dialog |
| | | :title="editCommonConfig.title + '销售明细单'" |
| | | :visible.sync="editConfig.visible" |
| | | :width="dialogWidth" |
| | | :before-close="handleClose" |
| | | > |
| | | <el-form |
| | | ref="form" |
| | | :model="editConfig.infomation" |
| | | :rules="rules" |
| | | label-position="right" |
| | | label-width="308px" |
| | | size="mini" |
| | | style="height: 60vh; overflow-x: hidden" |
| | | > |
| | | <!-- 信息 --> |
| | | <div class="basic-info"> |
| | | <!-- 基本信息 --> |
| | | <div class="basic-info-title">基本信息</div> |
| | | <div class="basic-info-view"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="客户名称" prop="customName"> |
| | | <div class="custom-name"> |
| | | <el-input v-model="editConfig.infomation.customName"></el-input> |
| | | <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="选择"></i></div> |
| | | <div class="common-select-btn"><i class="el-icon-edit" title="编辑"></i></div> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="订单编号" prop="orderNumber"> |
| | | <el-input v-model="editConfig.infomation.orderNumber"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="销售机会" prop="salesOpportunity"> |
| | | <div class="custom-name"> |
| | | <el-input v-model="editConfig.infomation.salesOpportunity"></el-input> |
| | | <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="选择"></i></div> |
| | | <div class="common-select-btn"><i class="el-icon-edit" title="编辑"></i></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="signDate"> |
| | | <el-date-picker v-model="editConfig.infomation.signDate" type="date" placeholder="选择日期"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="销售负责人" prop="salesHead"> |
| | | <el-select |
| | | v-model="editConfig.infomation.salesHead" |
| | | placeholder="请选择" |
| | | size="mini" |
| | | style="width: 63%" |
| | | > |
| | | <el-option |
| | | v-for="item in salesHeadOptions" |
| | | :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="deliveryDate"> |
| | | <el-date-picker v-model="editConfig.infomation.deliveryDate" type="date" placeholder="选择日期"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="微信订单状态" prop="wechatOrderStatus"> |
| | | <CommonSelectView |
| | | :common-value="editConfig.infomation.wechatOrderStatus" |
| | | :common-options="wechatOrderStatusOptions" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <!-- 收货信息 --> |
| | | <div class="basic-info-title">收货信息</div> |
| | | <div class="basic-info-view"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="收货人" prop="consignee"> |
| | | <el-input v-model="editConfig.infomation.consignee"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="收货人联系方式" prop="consigneeContactInfo"> |
| | | <el-input v-model="editConfig.infomation.consigneeContactInfo"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="收货地址" prop="shippingAddress"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 2 }" |
| | | v-model="editConfig.infomation.shippingAddress" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <!-- 条款与条件 --> |
| | | <div class="basic-info-title">条款与条件</div> |
| | | <div class="address-view"> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="条款与条件" prop="termsTreaty"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 4 }" |
| | | v-model="editConfig.infomation.termsTreaty" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <!-- 备注信息 --> |
| | | <div class="basic-info-title">备注信息</div> |
| | | <div class="address-view"> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="备注" prop="notes"> |
| | | <el-input type="textarea" :autosize="{ minRows: 2 }" v-model="editConfig.infomation.notes"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <!-- 附件信息 --> |
| | | <div class="basic-info-title">附件信息</div> |
| | | <div class="basic-info-view"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="附件" prop=""> |
| | | <div class="annex-view"> |
| | | <div @click="addAnnexClick">添加</div> |
| | | <div class="setFormat" @click="setFormatClick">设置允许上传的文件格式</div> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <!-- 产品管理 --> |
| | | <div class="basic-info-title" style="display: flex"> |
| | | 产品管理 |
| | | <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> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <div class="product-view"> |
| | | <CommonFormTableView :product-table-list="productTableList" /> |
| | | </div> |
| | | <!-- 选择审批流程 --> |
| | | <div v-if="editConfig.title === '新建'" class="basic-info-title">选择审批流程</div> |
| | | <div v-if="editConfig.title === '新建'" class="basic-info-view"> |
| | | <el-row> |
| | | <el-col :span="20"> |
| | | <el-form-item label="审批流程" prop="approvalWorkflow"> |
| | | <el-select |
| | | v-model="editConfig.infomation.approvalWorkflow" |
| | | placeholder="请选择" |
| | | size="mini" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="item in approvalWorkflowOptions" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="20"> |
| | | <el-form-item label="审批步骤" prop="approvalSteps"> |
| | | <el-input v-model="editConfig.infomation.approvalSteps"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="20"> |
| | | <el-form-item label="审批人" prop="approvalPerson"> |
| | | <el-input v-model="editConfig.infomation.approvalPerson"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="20"> |
| | | <el-form-item label="需要加急审批" prop="approvalUrgent"> |
| | | <el-checkbox v-model="editConfig.infomation.approvalUrgent"></el-checkbox> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="20"> |
| | | <el-form-item label="审批意见" prop="approvalOpinion"> |
| | | <el-input v-model="editConfig.infomation.approvalOpinion" type="textarea" :rows="2"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </div> |
| | | </el-form> |
| | | |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button type="primary" size="small" @click="editConfig.visible = false">保并提交审批</el-button> |
| | | <el-button type="primary" size="small" @click="editConfig.visible = false">保存</el-button> |
| | | <el-button size="small" @click="editConfig.visible = false">取消</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import CommonSelectView from "@/components/makepager/CommonSelectView" |
| | | import CommonFormTableView from "@/components/makepager/CommonFormTableView" |
| | | export default { |
| | | name: "AddSalesDetailsDialog", |
| | | props: { |
| | | editCommonConfig: { |
| | | type: Object, |
| | | default: () => { |
| | | return { |
| | | visible: false, |
| | | title: "新建", |
| | | infomation: { |
| | | customName: "", |
| | | orderNumber: "XSHT521", |
| | | salesOpportunity: "", |
| | | selSourceOrder: "", |
| | | signDate: "", |
| | | salesHead: "", |
| | | deliveryDate: "", |
| | | wechatOrderStatus: "", |
| | | consignee: "", |
| | | consigneeContactInfo: "", |
| | | shippingAddress: "", |
| | | termsTreaty: "", |
| | | notes: "", |
| | | approvalWorkflow: "", |
| | | approvalSteps: "", |
| | | approvalPerson: "", |
| | | approvalUrgent: "", |
| | | approvalOpinion: "" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | components: { CommonSelectView, CommonFormTableView }, |
| | | computed: {}, |
| | | data() { |
| | | return { |
| | | dialogWidth: "80%", |
| | | editConfig: this.editCommonConfig, |
| | | rules: { |
| | | customName: [{ required: true, message: "请输入", trigger: "blur" }], |
| | | orderNumber: [{ required: true, message: "请输入", trigger: "blur" }], |
| | | signDate: [{ required: true, message: "请选择", trigger: "change" }], |
| | | salesHead: [{ required: true, message: "请选择负责人", trigger: "change" }], |
| | | approvalOpinion: [{ required: true, message: "请输入", trigger: "blur" }] |
| | | }, |
| | | salesHeadOptions: [ |
| | | // 销售负责人 |
| | | { value: "1", label: "BOSS" }, |
| | | { value: "2", label: "Mia" }, |
| | | { value: "3", label: "财务" }, |
| | | { value: "4", label: "市场" }, |
| | | { value: "5", label: "系统管理员" }, |
| | | { value: "6", label: "销售" }, |
| | | { value: "7", label: "销售总监" } |
| | | ], |
| | | selSourceOrderOptions: [{ value: "1", label: "销售子单" }], |
| | | wechatOrderStatusOptions: [], // 微信订单状态 |
| | | currencyOptions: [ |
| | | { value: "1", label: "人民币(¥)" }, |
| | | { value: "2", label: "英镑(£)" }, |
| | | { value: "3", label: "欧元(€)" } |
| | | ], // 币种 |
| | | approvalWorkflowOptions: [], // 审批流程 |
| | | productTableList: { |
| | | tableData: [ |
| | | { |
| | | id: "1", |
| | | productNumber: "123", |
| | | productName: "", |
| | | startDate: "", |
| | | endDate: "2016-05-02", |
| | | number: "", |
| | | address: "" |
| | | } |
| | | ] |
| | | } |
| | | } |
| | | }, |
| | | created() {}, |
| | | methods: { |
| | | handleClose() { |
| | | this.editConfig.visible = false |
| | | }, |
| | | // 添加附件 |
| | | addAnnexClick() {}, |
| | | // 设置允许上传文件格式 |
| | | setFormatClick() {} |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <!-- Add "scoped" attribute to limit CSS to this component only --> |
| | | <style lang="scss" scoped> |
| | | .add-sales-details { |
| | | .basic-info { |
| | | .basic-info-title { |
| | | background-color: #f4f8fe; |
| | | padding-left: 10px; |
| | | font-size: 15px; |
| | | font-weight: bold; |
| | | color: #666; |
| | | height: 42px; |
| | | line-height: 42px; |
| | | } |
| | | .basic-info-view { |
| | | margin-top: 10px; |
| | | padding-right: 40px; |
| | | .custom-name { |
| | | display: flex; |
| | | .common-select-btn { |
| | | margin-left: 5px; |
| | | font-size: 18px; |
| | | } |
| | | } |
| | | } |
| | | .address-view { |
| | | margin-top: 10px; |
| | | padding-right: 40px; |
| | | } |
| | | .annex-view { |
| | | display: flex; |
| | | color: #6166d3; |
| | | .setFormat { |
| | | margin-left: 10px; |
| | | } |
| | | } |
| | | } |
| | | .unflod-collapse { |
| | | display: flex; |
| | | height: 30px; |
| | | justify-content: center; |
| | | align-items: center; |
| | | color: #6166d3; |
| | | } |
| | | .dialog-footer { |
| | | background-color: #f5f5f5; |
| | | height: 55px; |
| | | line-height: 55px; |
| | | } |
| | | } |
| | | ::v-deep { |
| | | .el-dialog__header { |
| | | padding: 12.5px 10px; |
| | | border-bottom: 1px solid #e5e5e5; |
| | | .el-dialog__title { |
| | | font-size: 15px; |
| | | color: #323232; |
| | | font-weight: bold; |
| | | } |
| | | } |
| | | .el-dialog__body { |
| | | padding: 0px; |
| | | } |
| | | .el-dialog__footer { |
| | | padding: 0px; |
| | | text-align: center; |
| | | box-sizing: border-box; |
| | | border-top: 1px solid #dadee5; |
| | | } |
| | | .product-view { |
| | | .el-form-item__label { |
| | | padding: 0; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <div class="sales-details"> |
| | | <SearchCommonView ref="searchCommonView" :query-class-options="queryClassOptions" :search-options="searchOptions" /> |
| | | <div class="btn-pager"> |
| | | <PublicFunctionBtnView |
| | | :duplicate-check="true" |
| | | :list-button="true" |
| | | :map-button="true" |
| | | :statistics="true" |
| | | :operates-list="operatesList" |
| | | /> |
| | | <PublicFunctionBtnView :submit-approval="true" :operates-list="operatesList" /> |
| | | <PagerView class="page" /> |
| | | </div> |
| | | <TableCommonView ref="tableListRef" :table-list="tableList"> |
| | | <TableCommonView ref="tableListRef" :show-summary="showSummary" :table-list="tableList"> |
| | | <template slot="tableButton"> |
| | | <el-table-column label="操作" width="100"> |
| | | <el-table-column label="操作" width="60"> |
| | | <template slot-scope="scope"> |
| | | <el-button @click="handleClick(scope.row)" type="text" size="small">编辑</el-button> |
| | | <el-button type="text" size="small">跟进</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </template> |
| | | </TableCommonView> |
| | | <!-- 新建/编辑 --> |
| | | <AddSalesLeadDialog v-if="editSalesLeadConfig.visible" :edit-sales-lead-config="editSalesLeadConfig" /> |
| | | <AddSalesDetailsDialog v-if="editConfig.visible" :edit-common-config="editConfig" /> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | import PublicFunctionBtnView from "@/components/makepager/PublicFunctionBtnView" |
| | | import PagerView from "@/components/makepager/PagerView" |
| | | import TableCommonView from "@/components/makepager/TableCommonView" |
| | | import AddSalesLeadDialog from "@/views/custom/salesLead/AddSalesLeadDialog" |
| | | import AddSalesDetailsDialog from "@/views/sales/salesDetails/AddSalesDetailsDialog" |
| | | |
| | | export default { |
| | | name: "SalesDetails", |
| | |
| | | PublicFunctionBtnView, |
| | | PagerView, |
| | | TableCommonView, |
| | | AddSalesLeadDialog |
| | | AddSalesDetailsDialog |
| | | }, |
| | | computed: { |
| | | searchCommonHeight() { |
| | |
| | | tableList: {}, |
| | | queryClassOptions: [ |
| | | { value: "1", label: "全部" }, |
| | | { value: "2", label: "广告宣传" }, |
| | | { value: "3", label: "跟进中" }, |
| | | { value: "4", label: "失败关闭" } |
| | | { value: "2", label: "已发货" }, |
| | | { value: "3", label: "待采购" }, |
| | | { value: "4", label: "本月交付" }, |
| | | { value: "5", label: "已作废" } |
| | | ], |
| | | searchOptions: [], |
| | | operatesList: [ |
| | |
| | | { id: "5", name: "更改创建人" }, |
| | | { id: "6", name: "树结构设置" }, |
| | | { id: "7", name: "审批设置" }, |
| | | { id: "8", name: "公海参数设置" } |
| | | { id: "8", name: "恢复预设列宽" } |
| | | ], |
| | | editSalesLeadConfig: { |
| | | editConfig: { |
| | | visible: false, |
| | | title: "新建", |
| | | infomation: {} |
| | | }, |
| | | showSummary: { |
| | | show: true, |
| | | sumProp: [ |
| | | "receiveTotalAmount", |
| | | "total", |
| | | "amountReceivable", |
| | | "invoicedAmount", |
| | | "uninvoicedAmount", |
| | | "number", |
| | | "unOutoundNo", |
| | | "priceTax" |
| | | ], |
| | | mergeNumber: 6 |
| | | } |
| | | } |
| | | }, |
| | |
| | | this.tableList = { |
| | | tableInfomation: [ |
| | | { |
| | | customName: "123123", |
| | | customType: "普通客户", |
| | | orderNumber: "XSHT265", |
| | | customName: "55555", |
| | | signDate: "2023-06-25", |
| | | salesHead: "系统管理员", |
| | | modifyTime: "2023-0703 11:22:12", |
| | | customerSize: "499以上", |
| | | importantLevel: "A类客户", |
| | | customNumber: "AC651", |
| | | customStatus: "潜在客户", |
| | | outboundStatus: "未出库", |
| | | receiveTotalAmount: "8000.00", |
| | | total: "8000.00", |
| | | amountReceivable: "8000.00", |
| | | invoicedAmount: "8000.00", |
| | | uninvoicedAmount: "8000.00", |
| | | productName: "自动打印机", |
| | | startDate: "2023-06-27", |
| | | endDate: "2024-07-15" |
| | | number: "1.00", |
| | | taxUnitPrice: "8000.00", |
| | | unOutoundNo: "1.00", |
| | | priceTax: "8000.00" |
| | | } |
| | | ], |
| | | tableColumn: [ |
| | | { label: "客户名称", prop: "customName", min: 120 }, // 客户名称 |
| | | { label: "客户类型", prop: "customType", min: 90 }, // 客户类型 |
| | | { label: "销售负责人", prop: "salesHead" }, // 销售负责人 |
| | | { label: "修改时间", prop: "modifyTime", min: 100 }, // 修改时间 |
| | | { label: "客户规模", prop: "customerSize" }, // 客户规模 |
| | | { label: "重要级别", prop: "importantLevel" }, // 重要级别 |
| | | { label: "客户编号", prop: "customNumber" }, // 客户编号 |
| | | { label: "客户状态", prop: "customStatus" }, // 客户状态 |
| | | { label: "产品名称", prop: "productName" }, // 产品名称 |
| | | { label: "服务开始日期", prop: "startDate" }, // 服务开始日期 |
| | | { label: "服务到期日", prop: "endDate" } // 服务到期日 |
| | | { label: "订单编号", prop: "orderNumber" }, |
| | | { label: "客户名称", prop: "customName" }, |
| | | { label: "签约日期", prop: "signDate" }, |
| | | { label: "销售负责人", prop: "salesHead" }, |
| | | { label: "出库状态", prop: "outboundStatus" }, |
| | | { label: "已收总额", prop: "receiveTotalAmount", price: true }, |
| | | { label: "合计", prop: "total", price: true }, |
| | | { label: "应收余额", prop: "amountReceivable", price: true }, |
| | | { label: "已开票金额", prop: "invoicedAmount", price: true }, |
| | | { label: "未开票金额", prop: "uninvoicedAmount", price: true }, |
| | | { label: "产品名称", prop: "productName" }, |
| | | { label: "数量", prop: "number" }, |
| | | { label: "含税单价", prop: "taxUnitPrice", price: true }, |
| | | { label: "未出库数量", prop: "unOutoundNo" }, |
| | | { label: "价税合计", prop: "priceTax", price: true } |
| | | ] |
| | | } |
| | | this.searchOptions = [] |
| | |
| | | }, |
| | | // 新建 |
| | | addBtnClick() { |
| | | this.editSalesLeadConfig.visible = true |
| | | this.editSalesLeadConfig.title = "新建" |
| | | this.editSalesLeadConfig.infomation = { |
| | | this.editConfig.visible = true |
| | | this.editConfig.title = "新建" |
| | | this.editConfig.infomation = { |
| | | customName: "", |
| | | saleLeadNumber: "LEA50", |
| | | contactName: "", |
| | | contactDuties: "", |
| | | phoneNumber: "", |
| | | businessStatus: "新建", |
| | | businessSource: "1", |
| | | owner: "", |
| | | position: "", |
| | | map: "", |
| | | country: "1", |
| | | province: "1", |
| | | city: "1", |
| | | region: "1", |
| | | address: "" |
| | | orderNumber: "XSHT521", |
| | | salesOpportunity: "", |
| | | selSourceOrder: "", |
| | | signDate: "", |
| | | salesHead: "", |
| | | deliveryDate: "", |
| | | wechatOrderStatus: "", |
| | | consignee: "", |
| | | consigneeContactInfo: "", |
| | | shippingAddress: "", |
| | | termsTreaty: "", |
| | | notes: "", |
| | | approvalWorkflow: "", |
| | | approvalSteps: "", |
| | | approvalPerson: "", |
| | | approvalOpinion: "" |
| | | } |
| | | }, |
| | | // 编辑 |
| | | handleClick(row) { |
| | | console.log(row) |
| | | this.editSalesLeadConfig.visible = true |
| | | this.editSalesLeadConfig.title = "编辑" |
| | | this.editSalesLeadConfig.infomation = { |
| | | customName: row.customName, |
| | | saleLeadNumber: row.saleLeadNumber, |
| | | contactName: row.contactName, |
| | | contactDuties: row.contactDuties, |
| | | phoneNumber: row.phoneNumber, |
| | | businessStatus: "新建", |
| | | businessSource: row.businessSource, |
| | | owner: row.owner, |
| | | position: "", |
| | | map: "", |
| | | country: "1", |
| | | province: "1", |
| | | city: "1", |
| | | region: "1", |
| | | address: "" |
| | | this.editConfig.visible = true |
| | | this.editConfig.title = "编辑" |
| | | this.editConfig.infomation = { |
| | | customName: "", |
| | | orderNumber: "XSHT521", |
| | | salesOpportunity: "", |
| | | selSourceOrder: "", |
| | | signDate: "", |
| | | salesHead: "", |
| | | deliveryDate: "", |
| | | wechatOrderStatus: "", |
| | | consignee: "", |
| | | consigneeContactInfo: "", |
| | | shippingAddress: "", |
| | | termsTreaty: "", |
| | | notes: "", |
| | | approvalWorkflow: "", |
| | | approvalSteps: "", |
| | | approvalPerson: "", |
| | | approvalOpinion: "" |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | ::v-deep { |
| | | .el-table .cell, |
| | | .el-table th.el-table__cell > .cell { |
| | | padding: 0 2px; |
| | | } |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <div class="add-sales-opportunity"> |
| | | <el-dialog |
| | | :title="editCommonConfig.title + '销售机会'" |
| | | :visible.sync="editConfig.visible" |
| | | :width="dialogWidth" |
| | | :before-close="handleClose" |
| | | > |
| | | <el-form |
| | | ref="form" |
| | | :model="editConfig.infomation" |
| | | :rules="rules" |
| | | label-position="right" |
| | | label-width="308px" |
| | | size="mini" |
| | | style="height: 60vh; overflow-x: hidden" |
| | | > |
| | | <!-- 信息 --> |
| | | <div class="basic-info"> |
| | | <!-- 基本信息 --> |
| | | <div class="basic-info-title">机会基本信息</div> |
| | | <div class="basic-info-view"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="客户名称" prop="customName"> |
| | | <div class="custom-name"> |
| | | <el-input v-model="editConfig.infomation.customName"></el-input> |
| | | <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="选择"></i></div> |
| | | <div class="common-select-btn"><i class="el-icon-edit" title="编辑"></i></div> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="销售机会编号" prop="salesOpportunityNo"> |
| | | <el-input v-model="editConfig.infomation.salesOpportunityNo"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="机会名称" prop="opportunityName"> |
| | | <div class="custom-name"> |
| | | <el-input v-model="editConfig.infomation.opportunityName"></el-input> |
| | | <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="选择"></i></div> |
| | | <!-- <div class="common-select-btn"><i class="el-icon-edit" title="编辑"></i></div> --> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="联系人姓名" prop="contactName"> |
| | | <el-input v-model="editConfig.infomation.contactName"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="商机来源" prop="businessSource"> |
| | | <CommonSelectView |
| | | :common-value="editConfig.infomation.businessSource" |
| | | :common-options="businessSourceOptions" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="商机类型" prop="businessType"> |
| | | <CommonSelectView |
| | | :common-value="editConfig.infomation.businessType" |
| | | :common-options="businessTypeOptions" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="销售阶段" prop="saleStage"> |
| | | <CommonSelectView |
| | | :common-value="editConfig.infomation.saleStage" |
| | | :common-options="saleStageOptions" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="销售负责人" prop="salesHead"> |
| | | <el-select |
| | | v-model="editConfig.infomation.salesHead" |
| | | placeholder="请选择" |
| | | size="mini" |
| | | style="width: 63%" |
| | | > |
| | | <el-option |
| | | v-for="item in salesHeadOptions" |
| | | :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="oldCustomerMarket"> |
| | | <CommonSelectView |
| | | :common-value="editConfig.infomation.oldCustomerMarket" |
| | | :common-options="oldCustomerMarketOptions" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="竞争对手" prop="competitor"> |
| | | <el-input v-model="editConfig.infomation.competitor"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <!-- 销售预测 --> |
| | | <div class="basic-info-title">销售预测</div> |
| | | <div class="basic-info-view"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="可能性(%)" prop="possible"> |
| | | <CommonSelectView :common-value="editConfig.infomation.possible" :common-options="possibleOptions" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="币种" prop="currency"> |
| | | <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> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="预算绝对值" prop="budgetAbsoluteValue"> |
| | | <el-input v-model="editConfig.infomation.budgetAbsoluteValue"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="预计成交日期" prop="expectDealDate"> |
| | | <el-date-picker v-model="editConfig.infomation.expectDealDate" type="date" placeholder="选择日期"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="预计合同金额" prop="expectContractAmount"> |
| | | <el-input v-model="editConfig.infomation.expectContractAmount"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="当前状态" prop="currentState"> |
| | | <CommonSelectView |
| | | :common-value="editConfig.infomation.currentState" |
| | | :common-options="currentStateOptions" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <!-- 商机七要素 --> |
| | | <div class="basic-info-title">商机七要素(5W2P)</div> |
| | | <div class="address-view"> |
| | | <el-row> |
| | | <el-col :span="20"> |
| | | <el-form-item label="客户需求或痛点(why)" prop="demandPainPoint"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 2 }" |
| | | v-model="editConfig.infomation.demandPainPoint" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="20"> |
| | | <el-form-item label="是否已经立项(plan)" prop="projectApproval"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 2 }" |
| | | v-model="editConfig.infomation.projectApproval" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="20"> |
| | | <el-form-item label="资金预算是多少(plan)" prop="fundBudget"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 2 }" |
| | | v-model="editConfig.infomation.fundBudget" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="20"> |
| | | <el-form-item label="关键决策人是谁(who)" prop="decisionMaker"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 2 }" |
| | | v-model="editConfig.infomation.decisionMaker" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="20"> |
| | | <el-form-item label="关键决策因素有哪些(what)" prop="decisionFactors"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 2 }" |
| | | v-model="editConfig.infomation.decisionFactors" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="20"> |
| | | <el-form-item label="决策流程是怎样的(what)" prop="decisionFlow"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 2 }" |
| | | v-model="editConfig.infomation.decisionFlow" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="20"> |
| | | <el-form-item label="竞争对手提供的方案(what)" prop="programme"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 2 }" |
| | | v-model="editConfig.infomation.programme" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <!-- SWOT分析 --> |
| | | <div class="basic-info-title">SWOT分析</div> |
| | | <div class="address-view"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="优势(S)" prop="advantage"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 2 }" |
| | | v-model="editConfig.infomation.advantage" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="劣势(W)" prop="disadvantage"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 2 }" |
| | | v-model="editConfig.infomation.disadvantage" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="机会(O)" prop="opportunity"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 2 }" |
| | | v-model="editConfig.infomation.opportunity" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="威胁(T)" prop="threaten"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 2 }" |
| | | v-model="editConfig.infomation.threaten" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <!-- 地址信息 --> |
| | | <div class="basic-info-title">地址信息</div> |
| | | <div class="address-view"> |
| | | <el-row> |
| | | <el-col :span="20"> |
| | | <el-form-item label="定位" prop="position"> |
| | | <el-input v-model="editConfig.infomation.position"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label="地图" prop="map"> |
| | | <div style="height: 100px"></div> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="国家" prop="country"> |
| | | <CommonSelectView :common-value="editConfig.infomation.country" :common-options="countryOptions" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="省份" prop="province"> |
| | | <CommonSelectView :common-value="editConfig.infomation.province" :common-options="provinceOptions" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="城市" prop="city"> |
| | | <CommonSelectView :common-value="editConfig.infomation.city" :common-options="cityOptions" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="区域" prop="region"> |
| | | <CommonSelectView :common-value="editConfig.infomation.region" :common-options="regionOptions" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="20"> |
| | | <el-form-item label="详细地址" prop="address"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 2, maxRows: 4 }" |
| | | placeholder="请输入内容" |
| | | v-model="editConfig.infomation.address" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <!-- 备注信息 --> |
| | | <div class="basic-info-title">备注信息</div> |
| | | <div class="basic-info-view"> |
| | | <el-row> |
| | | <el-col :span="20"> |
| | | <el-form-item label="备注" prop="notes"> |
| | | <el-input |
| | | type="textarea" |
| | | :autosize="{ minRows: 2, maxRows: 4 }" |
| | | placeholder="请输入内容" |
| | | v-model="editConfig.infomation.notes" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <!-- 附件信息 --> |
| | | <div class="basic-info-title">附件信息</div> |
| | | <div class="basic-info-view"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="附件" prop=""> |
| | | <div class="annex-view"> |
| | | <div @click="addAnnexClick">添加</div> |
| | | <div class="setFormat" @click="setFormatClick">设置允许上传的文件格式</div> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </div> |
| | | </el-form> |
| | | |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button type="primary" size="small" @click="editConfig.visible = false">保存</el-button> |
| | | <el-button size="small" @click="editConfig.visible = false">取消</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import CommonSelectView from "@/components/makepager/CommonSelectView" |
| | | export default { |
| | | name: "AddSalesOpportunityDialog", |
| | | props: { |
| | | editCommonConfig: { |
| | | type: Object, |
| | | default: () => { |
| | | return { |
| | | visible: false, |
| | | title: "新建", |
| | | infomation: { |
| | | customName: "", |
| | | salesOpportunityNo: "POT521", |
| | | opportunityName: "", |
| | | contactName: "", |
| | | businessSource: "", |
| | | businessType: "", |
| | | saleStage: "", |
| | | salesHead: "", |
| | | oldCustomerMarket: "", |
| | | competitor: "", |
| | | possible: "", |
| | | currency: "", |
| | | budgetAbsoluteValue: "", |
| | | expectDealDate: "", |
| | | expectContractAmount: "", |
| | | currentState: "", |
| | | demandPainPoint: "", |
| | | projectApproval: "", |
| | | fundBudget: "", |
| | | decisionMaker: "", |
| | | decisionFactors: "", |
| | | decisionFlow: "", |
| | | programme: "", |
| | | advantage: "", |
| | | disadvantage: "", |
| | | opportunity: "", |
| | | threaten: "", |
| | | position: "", |
| | | map: "", |
| | | country: "1", |
| | | province: "1", |
| | | city: "1", |
| | | region: "1", |
| | | notes: "" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | components: { CommonSelectView }, |
| | | computed: { |
| | | searchCommonHeight() { |
| | | return this.$refs.searchCommonView.offsetHeight |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | dialogWidth: "80%", |
| | | editConfig: this.editCommonConfig, |
| | | rules: { |
| | | salesOpportunityNo: [{ required: true, message: "请输入", trigger: "blur" }], |
| | | opportunityName: [{ required: true, message: "请选择", trigger: "change" }], |
| | | salesHead: [{ required: true, message: "请选择", trigger: "change" }], |
| | | saleStage: [{ required: true, message: "请选择", trigger: "change" }], |
| | | currency: [{ required: true, message: "请选择", trigger: "change" }], |
| | | expectDealDate: [{ required: true, message: "请选择", trigger: "change" }], |
| | | expectContractAmount: [{ required: true, message: "请选择", trigger: "change" }] |
| | | }, |
| | | businessSourceOptions: [ |
| | | { value: "1", label: "后台注册" }, |
| | | { value: "2", label: "代理商客户" }, |
| | | { value: "3", label: "电话陌生拜访" }, |
| | | { value: "4", label: "直接访问" }, |
| | | { value: "5", label: "项目合作" }, |
| | | { value: "6", label: "个人自找" }, |
| | | { value: "7", label: "二次销售" }, |
| | | { value: "8", label: "公司电话" } |
| | | ], |
| | | salesHeadOptions: [ |
| | | { value: "1", label: "BOSS" }, |
| | | { value: "2", label: "Mia" }, |
| | | { value: "3", label: "财务" }, |
| | | { value: "4", label: "市场" }, |
| | | { value: "5", label: "系统管理员" }, |
| | | { value: "6", label: "销售" }, |
| | | { value: "7", label: "销售总监" } |
| | | ], |
| | | businessTypeOptions: [], // 商机类型 |
| | | saleStageOptions: [], // 销售阶段 |
| | | oldCustomerMarketOptions: [], // 老客户营销 |
| | | possibleOptions: [], // 可能性 |
| | | currencyOptions: [], // 币种 |
| | | currentStateOptions: [], // 当前状态 |
| | | countryOptions: [{ value: "1", label: "中国" }], // 国家 |
| | | provinceOptions: [ |
| | | { value: "1", label: "北京市" }, |
| | | { value: "2", label: "上海市" }, |
| | | { value: "3", label: "吉林省" }, |
| | | { value: "4", label: "陕西省" } |
| | | ], // 省份 |
| | | cityOptions: [ |
| | | { value: "1", label: "北京市" }, |
| | | { value: "2", label: "上海市" }, |
| | | { value: "3", label: "吉林市" }, |
| | | { value: "4", label: "西安市" } |
| | | ], // 城市 |
| | | regionOptions: [ |
| | | { value: "1", label: "朝阳区" }, |
| | | { value: "2", label: "海淀区" }, |
| | | { value: "3", label: "通州区" }, |
| | | { value: "4", label: "西城区" } |
| | | ] // 区域 |
| | | } |
| | | }, |
| | | created() {}, |
| | | methods: { |
| | | handleClose() { |
| | | this.editConfig.visible = false |
| | | }, |
| | | // 添加附件 |
| | | addAnnexClick() {}, |
| | | // 设置允许上传文件格式 |
| | | setFormatClick() {} |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <!-- Add "scoped" attribute to limit CSS to this component only --> |
| | | <style lang="scss" scoped> |
| | | .add-sales-opportunity { |
| | | .basic-info { |
| | | .basic-info-title { |
| | | background-color: #f4f8fe; |
| | | padding-left: 10px; |
| | | font-size: 15px; |
| | | font-weight: bold; |
| | | color: #666; |
| | | height: 42px; |
| | | line-height: 42px; |
| | | } |
| | | .basic-info-view { |
| | | margin-top: 10px; |
| | | padding-right: 40px; |
| | | .custom-name { |
| | | display: flex; |
| | | .common-select-btn { |
| | | margin-left: 5px; |
| | | font-size: 18px; |
| | | } |
| | | } |
| | | } |
| | | .address-view { |
| | | margin-top: 10px; |
| | | padding-right: 40px; |
| | | } |
| | | .annex-view { |
| | | display: flex; |
| | | color: #6166d3; |
| | | .setFormat { |
| | | margin-left: 10px; |
| | | } |
| | | } |
| | | } |
| | | .unflod-collapse { |
| | | display: flex; |
| | | height: 30px; |
| | | justify-content: center; |
| | | align-items: center; |
| | | color: #6166d3; |
| | | } |
| | | .dialog-footer { |
| | | background-color: #f5f5f5; |
| | | height: 55px; |
| | | line-height: 55px; |
| | | } |
| | | } |
| | | ::v-deep { |
| | | .el-dialog__header { |
| | | padding: 12.5px 10px; |
| | | border-bottom: 1px solid #e5e5e5; |
| | | .el-dialog__title { |
| | | font-size: 15px; |
| | | color: #323232; |
| | | font-weight: bold; |
| | | } |
| | | } |
| | | .el-dialog__body { |
| | | padding: 0px; |
| | | } |
| | | .el-dialog__footer { |
| | | padding: 0px; |
| | | text-align: center; |
| | | box-sizing: border-box; |
| | | border-top: 1px solid #dadee5; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <div class="btn-pager"> |
| | | <PublicFunctionBtnView |
| | | :duplicate-check="true" |
| | | :list-button="true" |
| | | :map-button="true" |
| | | :statistics="true" |
| | | :custom-funnel="true" |
| | | :operates-list="operatesList" |
| | | /> |
| | | <PagerView class="page" /> |
| | |
| | | </template> |
| | | </TableCommonView> |
| | | <!-- 新建/编辑 --> |
| | | <AddSalesLeadDialog v-if="editSalesLeadConfig.visible" :edit-sales-lead-config="editSalesLeadConfig" /> |
| | | <AddSalesOpportunityDialog v-if="editConfig.visible" :edit-common-config="editConfig" /> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | import PublicFunctionBtnView from "@/components/makepager/PublicFunctionBtnView" |
| | | import PagerView from "@/components/makepager/PagerView" |
| | | import TableCommonView from "@/components/makepager/TableCommonView" |
| | | import AddSalesLeadDialog from "@/views/custom/salesLead/AddSalesLeadDialog" |
| | | import AddSalesOpportunityDialog from "@/views/sales/salesOpportunity/AddSalesOpportunityDialog" |
| | | |
| | | export default { |
| | | name: "SalesOpportunity", |
| | |
| | | PublicFunctionBtnView, |
| | | PagerView, |
| | | TableCommonView, |
| | | AddSalesLeadDialog |
| | | AddSalesOpportunityDialog |
| | | }, |
| | | computed: { |
| | | searchCommonHeight() { |
| | |
| | | data() { |
| | | return { |
| | | tableList: {}, |
| | | queryClassOptions: [{ value: "1", label: "全部" }], |
| | | queryClassOptions: [ |
| | | { value: "1", label: "全部" }, |
| | | { value: "2", label: "初期沟通" }, |
| | | { value: "3", label: "商务谈判" }, |
| | | { value: "4", label: "成功结案" }, |
| | | { value: "5", label: "失败结案" }, |
| | | { value: "6", label: "本周创建" }, |
| | | { value: "7", label: "本月创建" }, |
| | | { value: "8", label: "本周预计成交" }, |
| | | { value: "9", label: "本月预计成交" }, |
| | | { value: "10", label: "在谈商机" }, |
| | | { value: "11", label: "项目暂停" }, |
| | | { value: "12", label: "15天未联系商机" }, |
| | | { value: "13", label: "预计金额1W以上" } |
| | | ], |
| | | searchOptions: [], |
| | | operatesList: [ |
| | | { id: "1", name: "共享" }, |
| | |
| | | { id: "5", name: "更改创建人" }, |
| | | { id: "6", name: "树结构设置" }, |
| | | { id: "7", name: "审批设置" }, |
| | | { id: "8", name: "恢復" } |
| | | { id: "8", name: "恢复预设列宽" } |
| | | ], |
| | | editSalesLeadConfig: { |
| | | editConfig: { |
| | | visible: false, |
| | | title: "新建", |
| | | infomation: {} |
| | |
| | | this.tableList = { |
| | | tableInfomation: [ |
| | | { |
| | | customName: "123123", |
| | | customType: "普通客户", |
| | | salesHead: "系统管理员", |
| | | modifyTime: "2023-0703 11:22:12", |
| | | customerSize: "499以上", |
| | | importantLevel: "A类客户", |
| | | customNumber: "AC651", |
| | | customStatus: "潜在客户", |
| | | productName: "自动打印机", |
| | | startDate: "2023-06-27", |
| | | endDate: "2024-07-15" |
| | | opportunityName: "123123", |
| | | customName: "上海铃铛", |
| | | salesOpportunityNo: "POT205", |
| | | contactName: "刘总", |
| | | saleStage: "初期沟通", |
| | | possible: "A类客户", |
| | | expectDealDate: "50", |
| | | expectContractAmount: "2023-05-28", |
| | | budgetAbsoluteValue: "¥200,000.00", |
| | | salesHead: "系统管理员" |
| | | } |
| | | ], |
| | | tableColumn: [ |
| | | { label: "客户名称", prop: "customName", min: 120 }, // 客户名称 |
| | | { label: "客户类型", prop: "customType", min: 90 }, // 客户类型 |
| | | { label: "销售负责人", prop: "salesHead" }, // 销售负责人 |
| | | { label: "修改时间", prop: "modifyTime", min: 100 }, // 修改时间 |
| | | { label: "客户规模", prop: "customerSize" }, // 客户规模 |
| | | { label: "重要级别", prop: "importantLevel" }, // 重要级别 |
| | | { label: "客户编号", prop: "customNumber" }, // 客户编号 |
| | | { label: "客户状态", prop: "customStatus" }, // 客户状态 |
| | | { label: "产品名称", prop: "productName" }, // 产品名称 |
| | | { label: "服务开始日期", prop: "startDate" }, // 服务开始日期 |
| | | { label: "服务到期日", prop: "endDate" } // 服务到期日 |
| | | { label: "机会名称", prop: "opportunityName", min: 120 }, // 机会名称 |
| | | { label: "客户名称", prop: "customName", min: 90 }, // 客户名称 |
| | | { label: "销售机会编号", prop: "salesOpportunityNo" }, // 销售机会编号 |
| | | { label: "联系人姓名", prop: "contactName", min: 100 }, // 联系人姓名 |
| | | { label: "销售阶段", prop: "saleStage" }, // 销售阶段 |
| | | { label: "可能性(%)", prop: "possible" }, // 可能性 |
| | | { label: "预计成交日期", prop: "expectDealDate" }, // 预计成交日期 |
| | | { label: "预计合同金额", prop: "expectContractAmount" }, // 预计合同金额 |
| | | { label: "预算绝对值", prop: "budgetAbsoluteValue" }, // 预算绝对值 |
| | | { label: "销售负责人", prop: "salesHead" } // 销售负责人 |
| | | ] |
| | | } |
| | | this.searchOptions = [] |
| | |
| | | }, |
| | | // 新建 |
| | | addBtnClick() { |
| | | this.editSalesLeadConfig.visible = true |
| | | this.editSalesLeadConfig.title = "新建" |
| | | this.editSalesLeadConfig.infomation = { |
| | | this.editConfig.visible = true |
| | | this.editConfig.title = "新建" |
| | | this.editConfig.infomation = { |
| | | customName: "", |
| | | saleLeadNumber: "LEA50", |
| | | salesOpportunityNo: "POT521", |
| | | opportunityName: "", |
| | | contactName: "", |
| | | contactDuties: "", |
| | | phoneNumber: "", |
| | | businessStatus: "新建", |
| | | businessSource: "1", |
| | | owner: "", |
| | | businessSource: "", |
| | | businessType: "", |
| | | saleStage: "", |
| | | salesHead: "", |
| | | oldCustomerMarket: "", |
| | | competitor: "", |
| | | possible: "", |
| | | currency: "", |
| | | budgetAbsoluteValue: "", |
| | | expectDealDate: "", |
| | | expectContractAmount: "", |
| | | currentState: "", |
| | | demandPainPoint: "", |
| | | projectApproval: "", |
| | | fundBudget: "", |
| | | decisionMaker: "", |
| | | decisionFactors: "", |
| | | decisionFlow: "", |
| | | programme: "", |
| | | advantage: "", |
| | | disadvantage: "", |
| | | opportunity: "", |
| | | threaten: "", |
| | | position: "", |
| | | map: "", |
| | | country: "1", |
| | | province: "1", |
| | | city: "1", |
| | | region: "1", |
| | | address: "" |
| | | notes: "" |
| | | } |
| | | }, |
| | | // 编辑 |
| | | handleClick(row) { |
| | | console.log(row) |
| | | this.editSalesLeadConfig.visible = true |
| | | this.editSalesLeadConfig.title = "编辑" |
| | | this.editSalesLeadConfig.infomation = { |
| | | customName: row.customName, |
| | | saleLeadNumber: row.saleLeadNumber, |
| | | contactName: row.contactName, |
| | | contactDuties: row.contactDuties, |
| | | phoneNumber: row.phoneNumber, |
| | | businessStatus: "新建", |
| | | businessSource: row.businessSource, |
| | | owner: row.owner, |
| | | this.editConfig.visible = true |
| | | this.editConfig.title = "编辑" |
| | | this.editConfig.infomation = { |
| | | customName: "", |
| | | salesOpportunityNo: "POT521", |
| | | opportunityName: "", |
| | | contactName: "", |
| | | businessSource: "", |
| | | businessType: "", |
| | | saleStage: "", |
| | | salesHead: "", |
| | | oldCustomerMarket: "", |
| | | competitor: "", |
| | | possible: "", |
| | | currency: "", |
| | | budgetAbsoluteValue: "", |
| | | expectDealDate: "", |
| | | expectContractAmount: "", |
| | | currentState: "", |
| | | demandPainPoint: "", |
| | | projectApproval: "", |
| | | fundBudget: "", |
| | | decisionMaker: "", |
| | | decisionFactors: "", |
| | | decisionFlow: "", |
| | | programme: "", |
| | | advantage: "", |
| | | disadvantage: "", |
| | | opportunity: "", |
| | | threaten: "", |
| | | position: "", |
| | | map: "", |
| | | country: "1", |
| | | province: "1", |
| | | city: "1", |
| | | region: "1", |
| | | address: "" |
| | | notes: "" |
| | | } |
| | | } |
| | | } |
| | |
| | | <div class="sales-return"> |
| | | <SearchCommonView ref="searchCommonView" :query-class-options="queryClassOptions" :search-options="searchOptions" /> |
| | | <div class="btn-pager"> |
| | | <PublicFunctionBtnView |
| | | :duplicate-check="true" |
| | | :list-button="true" |
| | | :map-button="true" |
| | | :statistics="true" |
| | | :operates-list="operatesList" |
| | | /> |
| | | <PublicFunctionBtnView :receive="false" :import-button="false" receive:operates-list="operatesList" /> |
| | | <PagerView class="page" /> |
| | | </div> |
| | | <TableCommonView ref="tableListRef" :table-list="tableList"> |
| | | <template slot="tableButton"> |
| | | <el-table-column label="操作" width="100"> |
| | | <el-table-column label="操作" width="60"> |
| | | <template slot-scope="scope"> |
| | | <el-button @click="handleClick(scope.row)" type="text" size="small">编辑</el-button> |
| | | <el-button type="text" size="small">跟进</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </template> |
| | | </TableCommonView> |
| | | <!-- 新建/编辑 --> |
| | | <AddSalesLeadDialog v-if="editSalesLeadConfig.visible" :edit-sales-lead-config="editSalesLeadConfig" /> |
| | | <AddSalesLeadDialog v-if="editConfig.visible" :edit-sales-lead-config="editConfig" /> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | tableList: {}, |
| | | queryClassOptions: [ |
| | | { value: "1", label: "全部" }, |
| | | { value: "2", label: "广告宣传" }, |
| | | { value: "3", label: "跟进中" }, |
| | | { value: "4", label: "失败关闭" } |
| | | { value: "2", label: "中止" }, |
| | | { value: "3", label: "结束" }, |
| | | { value: "4", label: "已入库" }, |
| | | { value: "4", label: "未入库" } |
| | | ], |
| | | searchOptions: [], |
| | | operatesList: [ |
| | |
| | | { id: "5", name: "更改创建人" }, |
| | | { id: "6", name: "树结构设置" }, |
| | | { id: "7", name: "审批设置" }, |
| | | { id: "8", name: "公海参数设置" } |
| | | { id: "8", name: "恢复预设列宽" } |
| | | ], |
| | | editSalesLeadConfig: { |
| | | editConfig: { |
| | | visible: false, |
| | | title: "新建", |
| | | infomation: {} |
| | |
| | | this.tableList = { |
| | | tableInfomation: [ |
| | | { |
| | | customName: "123123", |
| | | customType: "普通客户", |
| | | salesReturnOrderNo: "THD20230607-44", |
| | | customName: "欧克科技股份有限公司", |
| | | returnDate: "2023-06-07", |
| | | state: "未入库", |
| | | returnWarehouse: "总仓", |
| | | refundabe: "¥9,499.00", |
| | | refunded: "¥1,499.00", |
| | | salesHead: "系统管理员", |
| | | modifyTime: "2023-0703 11:22:12", |
| | | customerSize: "499以上", |
| | | importantLevel: "A类客户", |
| | | customNumber: "AC651", |
| | | customStatus: "潜在客户", |
| | | productName: "自动打印机", |
| | | startDate: "2023-06-27", |
| | | endDate: "2024-07-15" |
| | | modifyTime: "2023-06-07 11:10:25" |
| | | } |
| | | ], |
| | | tableColumn: [ |
| | | { label: "客户名称", prop: "customName", min: 120 }, // 客户名称 |
| | | { label: "客户类型", prop: "customType", min: 90 }, // 客户类型 |
| | | { label: "销售负责人", prop: "salesHead" }, // 销售负责人 |
| | | { label: "修改时间", prop: "modifyTime", min: 100 }, // 修改时间 |
| | | { label: "客户规模", prop: "customerSize" }, // 客户规模 |
| | | { label: "重要级别", prop: "importantLevel" }, // 重要级别 |
| | | { label: "客户编号", prop: "customNumber" }, // 客户编号 |
| | | { label: "客户状态", prop: "customStatus" }, // 客户状态 |
| | | { label: "产品名称", prop: "productName" }, // 产品名称 |
| | | { label: "服务开始日期", prop: "startDate" }, // 服务开始日期 |
| | | { label: "服务到期日", prop: "endDate" } // 服务到期日 |
| | | { label: "销售退货单编号", prop: "salesReturnOrderNo", min: 120 }, |
| | | { label: "客户名称", prop: "customName", min: 90 }, |
| | | { label: "退货日期", prop: "returnDate", min: 100 }, |
| | | { label: "状态", prop: "state" }, |
| | | { label: "退入仓库", prop: "returnWarehouse" }, |
| | | { label: "应退款", prop: "refundabe" }, |
| | | { label: "已退款", prop: "refunded" }, |
| | | { label: "销售负责人", prop: "salesHead" }, |
| | | { label: "修改时间", prop: "modifyTime" } |
| | | ] |
| | | } |
| | | this.searchOptions = [] |
| | |
| | | }, |
| | | // 新建 |
| | | addBtnClick() { |
| | | this.editSalesLeadConfig.visible = true |
| | | this.editSalesLeadConfig.title = "新建" |
| | | this.editSalesLeadConfig.infomation = { |
| | | this.editConfig.visible = true |
| | | this.editConfig.title = "新建" |
| | | this.editConfig.infomation = { |
| | | customName: "", |
| | | saleLeadNumber: "LEA50", |
| | | contactName: "", |
| | |
| | | // 编辑 |
| | | handleClick(row) { |
| | | console.log(row) |
| | | this.editSalesLeadConfig.visible = true |
| | | this.editSalesLeadConfig.title = "编辑" |
| | | this.editSalesLeadConfig.infomation = { |
| | | this.editConfig.visible = true |
| | | this.editConfig.title = "编辑" |
| | | this.editConfig.infomation = { |
| | | customName: row.customName, |
| | | saleLeadNumber: row.saleLeadNumber, |
| | | contactName: row.contactName, |
New file |
| | |
| | | <template> |
| | | <div class="add-quotation"> |
| | | <el-dialog |
| | | :title="editCommonConfig.title + '销售子单'" |
| | | :visible.sync="editConfig.visible" |
| | | :width="dialogWidth" |
| | | :before-close="handleClose" |
| | | > |
| | | <el-form |
| | | ref="form" |
| | | :model="editConfig.infomation" |
| | | :rules="rules" |
| | | label-position="right" |
| | | label-width="308px" |
| | | size="mini" |
| | | > |
| | | <!-- 信息 --> |
| | | <div class="basic-info"> |
| | | <!-- 基本信息 --> |
| | | <div class="basic-info-title">基本信息</div> |
| | | <div class="basic-info-view"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="客户名称" prop="customName"> |
| | | <div class="custom-name"> |
| | | <el-input v-model="editConfig.infomation.customName"></el-input> |
| | | <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="选择"></i></div> |
| | | <div class="common-select-btn"><i class="el-icon-edit" title="编辑"></i></div> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="单据编号" prop="documentNumber"> |
| | | <el-input v-model="editConfig.infomation.documentNumber"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="销售总单" prop="masterOrder"> |
| | | <div class="custom-name"> |
| | | <el-input v-model="editConfig.infomation.masterOrder"></el-input> |
| | | <div class="common-select-btn"><i class="el-icon-circle-plus-outline" title="选择"></i></div> |
| | | <div class="common-select-btn"><i class="el-icon-edit" title="编辑"></i></div> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="负责人" prop="owner"> |
| | | <el-select v-model="editConfig.infomation.owner" placeholder="请选择" size="mini" style="width: 63%"> |
| | | <el-option v-for="item in ownerOptions" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <!-- 附件信息 --> |
| | | <div class="basic-info-title">附件信息</div> |
| | | <div class="basic-info-view"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="附件" prop=""> |
| | | <div class="annex-view"> |
| | | <div @click="addAnnexClick">添加</div> |
| | | <div class="setFormat" @click="setFormatClick">设置允许上传的文件格式</div> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <!-- 产品管理 --> |
| | | <div class="basic-info-title" style="display: flex"> |
| | | 产品管理 |
| | | <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> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <div class="product-view"> |
| | | <CommonFormTableView :product-table-list="productTableList" /> |
| | | </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" |
| | | > |
| | | <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"></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"> |
| | | <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"></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> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button type="primary" size="small" @click="editConfig.visible = false">保存</el-button> |
| | | <el-button size="small" @click="editConfig.visible = false">取消</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import CommonFormTableView from "@/components/makepager/CommonFormTableView" |
| | | export default { |
| | | name: "QuotationDialog", |
| | | components: { CommonFormTableView }, |
| | | props: { |
| | | editCommonConfig: { |
| | | type: Object, |
| | | default: () => { |
| | | return { |
| | | visible: false, |
| | | title: "新建", |
| | | infomation: { |
| | | customName: "", |
| | | documentNumber: "AC6521", |
| | | masterOrder: "", |
| | | owner: "", |
| | | currency: "", |
| | | discount: "", |
| | | total: "14.00" |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | computed: {}, |
| | | data() { |
| | | return { |
| | | dialogWidth: "80%", |
| | | editConfig: this.editCommonConfig, |
| | | rules: { |
| | | documentNumber: [{ required: true, message: "请输入", trigger: "blur" }], |
| | | owner: [{ required: true, message: "请选择", trigger: "change" }] |
| | | }, |
| | | ownerOptions: [ |
| | | // 负责人 |
| | | { value: "1", label: "BOSS" }, |
| | | { value: "2", label: "Mia" }, |
| | | { value: "3", label: "财务" }, |
| | | { value: "4", label: "市场" }, |
| | | { value: "5", label: "系统管理员" }, |
| | | { value: "6", label: "销售" }, |
| | | { value: "7", label: "销售总监" } |
| | | ], |
| | | discount: "2", |
| | | discountOptions: [ |
| | | { value: "1", label: "百分比降价" }, |
| | | { value: "2", label: "直接降价" } |
| | | ], // 整单折扣 |
| | | adjust: "1", |
| | | adjustOptions: [ |
| | | { value: "1", label: "增加" }, |
| | | { value: "2", label: "减少" } |
| | | ], // 调整 |
| | | productTableList: { |
| | | tableData: [ |
| | | { |
| | | id: "1", |
| | | productNumber: "123", |
| | | productName: "", |
| | | startDate: "", |
| | | endDate: "2016-05-02", |
| | | number: "", |
| | | address: "" |
| | | } |
| | | ] |
| | | } |
| | | } |
| | | }, |
| | | created() {}, |
| | | methods: { |
| | | handleClose() { |
| | | this.editConfig.visible = false |
| | | }, |
| | | // 添加附件 |
| | | addAnnexClick() {}, |
| | | // 设置允许上传文件格式 |
| | | setFormatClick() {} |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <!-- Add "scoped" attribute to limit CSS to this component only --> |
| | | <style lang="scss" scoped> |
| | | .add-quotation { |
| | | .basic-info { |
| | | .basic-info-title { |
| | | background-color: #f4f8fe; |
| | | padding-left: 10px; |
| | | font-size: 15px; |
| | | font-weight: bold; |
| | | color: #666; |
| | | height: 42px; |
| | | line-height: 42px; |
| | | } |
| | | .basic-info-view { |
| | | margin-top: 10px; |
| | | padding-right: 40px; |
| | | .custom-name { |
| | | display: flex; |
| | | .common-select-btn { |
| | | margin-left: 5px; |
| | | font-size: 18px; |
| | | } |
| | | } |
| | | } |
| | | .address-view { |
| | | margin-top: 10px; |
| | | padding-right: 40px; |
| | | } |
| | | .annex-view { |
| | | display: flex; |
| | | color: #6166d3; |
| | | .setFormat { |
| | | margin-left: 10px; |
| | | } |
| | | } |
| | | } |
| | | .dialog-footer { |
| | | background-color: #f5f5f5; |
| | | height: 55px; |
| | | line-height: 55px; |
| | | } |
| | | } |
| | | ::v-deep { |
| | | .el-dialog__header { |
| | | padding: 12.5px 10px; |
| | | border-bottom: 1px solid #e5e5e5; |
| | | .el-dialog__title { |
| | | font-size: 15px; |
| | | color: #323232; |
| | | font-weight: bold; |
| | | } |
| | | } |
| | | .el-dialog__body { |
| | | padding: 0px; |
| | | } |
| | | .el-dialog__footer { |
| | | padding: 0px; |
| | | text-align: center; |
| | | box-sizing: border-box; |
| | | border-top: 1px solid #dadee5; |
| | | } |
| | | .product-view { |
| | | .el-form-item__label { |
| | | padding: 0; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <div class="sub-order"> |
| | | <SearchCommonView ref="searchCommonView" :query-class-options="queryClassOptions" :search-options="searchOptions" /> |
| | | <div class="btn-pager"> |
| | | <PublicFunctionBtnView |
| | | :duplicate-check="true" |
| | | :list-button="true" |
| | | :map-button="true" |
| | | :statistics="true" |
| | | :operates-list="operatesList" |
| | | /> |
| | | <PublicFunctionBtnView :operates-list="operatesList" /> |
| | | <PagerView class="page" /> |
| | | </div> |
| | | <TableCommonView ref="tableListRef" :table-list="tableList"> |
| | | <TableCommonView ref="tableListRef" :show-summary="showSummary" :table-list="tableList"> |
| | | <template slot="tableButton"> |
| | | <el-table-column label="操作" width="100"> |
| | | <el-table-column label="操作" width="60"> |
| | | <template slot-scope="scope"> |
| | | <el-button @click="handleClick(scope.row)" type="text" size="small">编辑</el-button> |
| | | <el-button type="text" size="small">跟进</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </template> |
| | | </TableCommonView> |
| | | <!-- 新建/编辑 --> |
| | | <AddSalesLeadDialog v-if="editSalesLeadConfig.visible" :edit-sales-lead-config="editSalesLeadConfig" /> |
| | | <AddSubOrderDialog v-if="editConfig.visible" :edit-common-config="editConfig" /> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | import PublicFunctionBtnView from "@/components/makepager/PublicFunctionBtnView" |
| | | import PagerView from "@/components/makepager/PagerView" |
| | | import TableCommonView from "@/components/makepager/TableCommonView" |
| | | import AddSalesLeadDialog from "@/views/custom/salesLead/AddSalesLeadDialog" |
| | | import AddSubOrderDialog from "@/views/sales/subOrder/AddSubOrderDialog" |
| | | |
| | | export default { |
| | | name: "SubOrder", |
| | |
| | | PublicFunctionBtnView, |
| | | PagerView, |
| | | TableCommonView, |
| | | AddSalesLeadDialog |
| | | AddSubOrderDialog |
| | | }, |
| | | computed: { |
| | | searchCommonHeight() { |
| | |
| | | tableList: {}, |
| | | queryClassOptions: [ |
| | | { value: "1", label: "全部" }, |
| | | { value: "2", label: "广告宣传" }, |
| | | { value: "3", label: "跟进中" }, |
| | | { value: "4", label: "失败关闭" } |
| | | { value: "2", label: "已批准" }, |
| | | { value: "3", label: "审批中" }, |
| | | { value: "4", label: "未提交" }, |
| | | { value: "5", label: "已驳回" }, |
| | | { value: "6", label: "已拒绝" } |
| | | ], |
| | | searchOptions: [], |
| | | operatesList: [ |
| | |
| | | { id: "5", name: "更改创建人" }, |
| | | { id: "6", name: "树结构设置" }, |
| | | { id: "7", name: "审批设置" }, |
| | | { id: "8", name: "公海参数设置" } |
| | | { id: "8", name: "恢复预设列宽" } |
| | | ], |
| | | editSalesLeadConfig: { |
| | | editConfig: { |
| | | visible: false, |
| | | title: "新建", |
| | | infomation: {} |
| | | }, |
| | | showSummary: { |
| | | show: true, |
| | | sumProp: ["number"], |
| | | mergeNumber: 7 |
| | | } |
| | | } |
| | | }, |
| | |
| | | this.tableList = { |
| | | tableInfomation: [ |
| | | { |
| | | customName: "123123", |
| | | customType: "普通客户", |
| | | salesHead: "系统管理员", |
| | | modifyTime: "2023-0703 11:22:12", |
| | | customerSize: "499以上", |
| | | importantLevel: "A类客户", |
| | | customNumber: "AC651", |
| | | customStatus: "潜在客户", |
| | | documentNumber: "ZDYBD12-1", |
| | | customName: "上海有限公司", |
| | | masterOrder: "ZDYBD03-1", |
| | | owner: "系统管理员", |
| | | approvalStatus: "未提交", |
| | | productName: "自动打印机", |
| | | startDate: "2023-06-27", |
| | | endDate: "2024-07-15" |
| | | number: "2.00" |
| | | } |
| | | ], |
| | | tableColumn: [ |
| | | { label: "单据编号", prop: "documentNumber", min: 120 }, // 单据编号 |
| | | { label: "客户名称", prop: "customName", min: 120 }, // 客户名称 |
| | | { label: "客户类型", prop: "customType", min: 90 }, // 客户类型 |
| | | { label: "销售负责人", prop: "salesHead" }, // 销售负责人 |
| | | { label: "修改时间", prop: "modifyTime", min: 100 }, // 修改时间 |
| | | { label: "客户规模", prop: "customerSize" }, // 客户规模 |
| | | { label: "重要级别", prop: "importantLevel" }, // 重要级别 |
| | | { label: "客户编号", prop: "customNumber" }, // 客户编号 |
| | | { label: "客户状态", prop: "customStatus" }, // 客户状态 |
| | | { label: "销售总单", prop: "masterOrder", min: 90 }, // 销售总单 |
| | | { label: "负责人", prop: "owner" }, // 负责人 |
| | | { label: "审批状态", prop: "approvalStatus" }, // 审批状态 |
| | | { label: "产品名称", prop: "productName" }, // 产品名称 |
| | | { label: "服务开始日期", prop: "startDate" }, // 服务开始日期 |
| | | { label: "服务到期日", prop: "endDate" } // 服务到期日 |
| | | { label: "数量", prop: "number", min: 100 } // 数量 |
| | | ] |
| | | } |
| | | this.searchOptions = [] |
| | |
| | | }, |
| | | // 新建 |
| | | addBtnClick() { |
| | | this.editSalesLeadConfig.visible = true |
| | | this.editSalesLeadConfig.title = "新建" |
| | | this.editSalesLeadConfig.infomation = { |
| | | this.editConfig.visible = true |
| | | this.editConfig.title = "新建" |
| | | this.editConfig.infomation = { |
| | | customName: "", |
| | | saleLeadNumber: "LEA50", |
| | | contactName: "", |
| | | contactDuties: "", |
| | | phoneNumber: "", |
| | | businessStatus: "新建", |
| | | businessSource: "1", |
| | | documentNumber: "AC6521", |
| | | masterOrder: "", |
| | | owner: "", |
| | | position: "", |
| | | map: "", |
| | | country: "1", |
| | | province: "1", |
| | | city: "1", |
| | | region: "1", |
| | | address: "" |
| | | currency: "", |
| | | discount: "", |
| | | total: "" |
| | | } |
| | | }, |
| | | // 编辑 |
| | | handleClick(row) { |
| | | console.log(row) |
| | | this.editSalesLeadConfig.visible = true |
| | | this.editSalesLeadConfig.title = "编辑" |
| | | this.editSalesLeadConfig.infomation = { |
| | | customName: row.customName, |
| | | saleLeadNumber: row.saleLeadNumber, |
| | | contactName: row.contactName, |
| | | contactDuties: row.contactDuties, |
| | | phoneNumber: row.phoneNumber, |
| | | businessStatus: "新建", |
| | | businessSource: row.businessSource, |
| | | owner: row.owner, |
| | | position: "", |
| | | map: "", |
| | | country: "1", |
| | | province: "1", |
| | | city: "1", |
| | | region: "1", |
| | | address: "" |
| | | this.editConfig.visible = true |
| | | this.editConfig.title = "编辑" |
| | | this.editConfig.infomation = { |
| | | customName: "", |
| | | documentNumber: "AC6521", |
| | | masterOrder: "", |
| | | owner: "", |
| | | currency: "", |
| | | discount: "", |
| | | total: "14.00" |
| | | } |
| | | } |
| | | } |
| | |
| | | <template> |
| | | <div class="service-contract"> |
| | | <div class="add-service-contract"> |
| | | <el-dialog |
| | | :title="editCommonConfig.title + '服务合同'" |
| | | :visible.sync="editConfig.visible" |
| | |
| | | |
| | | <!-- Add "scoped" attribute to limit CSS to this component only --> |
| | | <style lang="scss" scoped> |
| | | .service-contract { |
| | | .add-service-contract { |
| | | .basic-info { |
| | | .basic-info-title { |
| | | background-color: #f4f8fe; |
| | |
| | | </div> |
| | | </el-form> |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button type="primary" size="small" @click="editConfig.visible = false">保并提交审批</el-button> |
| | | <el-button type="primary" size="small" @click="editConfig.visible = false">保存</el-button> |
| | | <el-button size="small" @click="editConfig.visible = false">取消</el-button> |
| | | </div> |
| | |
| | | </el-form> |
| | | |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button type="primary" size="small" @click="editConfig.visible = false">保并提交审批</el-button> |
| | | <el-button type="primary" size="small" @click="editConfig.visible = false">保存</el-button> |
| | | <el-button size="small" @click="editConfig.visible = false">取消</el-button> |
| | | </div> |