From 5e89a1759a2d20e549587fc01cf6b57a3e82950a Mon Sep 17 00:00:00 2001
From: haoxuan <haoxuan>
Date: 星期四, 24 八月 2023 17:26:43 +0800
Subject: [PATCH] 采购管理的 前端页面开发 2023-8-24
---
src/views/purchaseManage/quality/DetailSupplier.vue | 338 +++++++
src/views/purchaseManage/returned/DetailSupplier.vue | 352 ++++++++
src/components/makepager/SearchCommonView.vue | 12
src/views/purchaseManage/purchase/index.vue | 209 ++++
src/components/makepager/TableCommonView.vue | 5
src/views/purchaseManage/warehouse/DetailSupplier.vue | 345 ++++++++
src/views/purchaseManage/warehouse/index.vue | 210 ++++
src/views/purchaseManage/returned/index.vue | 207 ++++
src/components/layout/components/appsidebar/index.vue | 8
src/views/purchaseManage/quality/index.vue | 205 ++++
src/router/purchase/index.js | 78
src/components/layout/components/AppMain.vue | 2
src/views/purchaseManage/purchase/DetailSupplier.vue | 569 +++++++++++++
13 files changed, 2,494 insertions(+), 46 deletions(-)
diff --git a/src/components/layout/components/AppMain.vue b/src/components/layout/components/AppMain.vue
index 7cdbb3d..e0694e9 100644
--- a/src/components/layout/components/AppMain.vue
+++ b/src/components/layout/components/AppMain.vue
@@ -30,7 +30,7 @@
flex: 1;
flex-direction: column;
// height: 100%;
- width: 100%;
+ width: calc(100% - 210px);
.app-main-content {
width: 100%;
overflow-y: auto;
diff --git a/src/components/layout/components/appsidebar/index.vue b/src/components/layout/components/appsidebar/index.vue
index 8ffc890..afdf9be 100644
--- a/src/components/layout/components/appsidebar/index.vue
+++ b/src/components/layout/components/appsidebar/index.vue
@@ -25,10 +25,10 @@
<i class="el-icon-phone-outline icon"></i>
<span>閲囪喘绠$悊</span>
</template>
- <el-menu-item index="/sales/salesOpportunity">閲囪喘璁㈠崟</el-menu-item>
- <el-menu-item index="/sales/quotation">閲囪喘璐ㄦ鍗�</el-menu-item>
- <el-menu-item index="/sales/masterOrder">閲囪喘鍏ュ簱鍗�</el-menu-item>
- <el-menu-item index="/sales/subOrder">閲囪喘閫�璐у崟</el-menu-item>
+ <el-menu-item index="/purchaseManage/purchase">閲囪喘璁㈠崟</el-menu-item>
+ <el-menu-item index="/purchaseManage/quality">閲囪喘璐ㄦ鍗�</el-menu-item>
+ <el-menu-item index="/purchaseManage/warehouse">閲囪喘鍏ュ簱鍗�</el-menu-item>
+ <el-menu-item index="/purchaseManage/returned">閲囪喘閫�璐у崟</el-menu-item>
</el-submenu>
<el-submenu index="3">
<template slot="title">
diff --git a/src/components/makepager/SearchCommonView.vue b/src/components/makepager/SearchCommonView.vue
index 98a11d2..277f5d8 100644
--- a/src/components/makepager/SearchCommonView.vue
+++ b/src/components/makepager/SearchCommonView.vue
@@ -2,11 +2,13 @@
<div class="search-list">
<div class="search-top">
<div class="search">
- <el-input placeholder="璇疯緭鍏ュ唴瀹�" v-model="searchInput" class="input-with-select" clearable>
+ <el-input v-if="inputSelect" :placeholder="placeholder" v-model="searchInput" class="input-with-select" clearable>
<el-select v-model="searchSelValue" slot="prepend" placeholder="璇烽�夋嫨" class="search-sel">
<el-option v-for="item in searchOptions" :key="item.value" :label="item.label" :value="item"> </el-option>
</el-select>
<!-- <i slot="suffix" class="el-icon-search" style="cursor: pointer" @click="searchClick"></i> -->
+ </el-input>
+ <el-input v-else :placeholder="placeholder" v-model="searchInput" class="input-with-select" clearable>
</el-input>
</div>
<div class="btn">
@@ -24,6 +26,14 @@
name: "SearchCommonView",
components: {},
props: {
+ placeholder:{
+ type:String,
+ default:'璇疯緭鍏ュ唴瀹�',
+ },
+ inputSelect:{
+ type:Boolean,
+ default:true,
+ },
queryClass: {
type: String,
default: "1"
diff --git a/src/components/makepager/TableCommonView.vue b/src/components/makepager/TableCommonView.vue
index d130723..bb3f2c3 100644
--- a/src/components/makepager/TableCommonView.vue
+++ b/src/components/makepager/TableCommonView.vue
@@ -118,7 +118,8 @@
return {
show: false,
sumProp: [],
- mergeNumber: 1
+ mergeNumber: 1,
+ totalName:'鏈〉鎬昏'
}
}
}
@@ -159,7 +160,7 @@
const sums = []
columns.forEach((column, index) => {
if (index === this.showSummary.mergeNumber) {
- sums[index] = "鏈〉鎬昏"
+ sums[index] = this.showSummary.totalName
}
const values = data.map((item) => Number(item[column.property]))
if (this.showSummary.sumProp.includes(column.property)) {
diff --git a/src/router/purchase/index.js b/src/router/purchase/index.js
index ed2f6fa..c8459f6 100644
--- a/src/router/purchase/index.js
+++ b/src/router/purchase/index.js
@@ -1,43 +1,45 @@
-// const type from '@/router/deployCode'
-// const salesOpportunity = (resolve) => require(["@/views/sales/salesOpportunity/index"], resolve) // 閿�鍞満浼�
-// const quotation = (resolve) => require(["@/views/sales/quotation/index"], resolve) // 鎶ヤ环鍗�
-// const masterOrder = (resolve) => require(["@/views/sales/masterOrder/index"], resolve) // 閿�鍞�诲崟
-// const subOrder = (resolve) => require(["@/views/sales/subOrder/index"], resolve) // 閿�鍞瓙鍗�
-
+const purchase = (resolve) => require(["@/views/purchaseManage/purchase/index"], resolve) // 閲囪喘鍗�
+const quality = (resolve) => require(["@/views/purchaseManage/quality/index"], resolve) // 閲囪喘璐ㄦ鍗�
+const warehouse = (resolve) => require(["@/views/purchaseManage/warehouse/index"], resolve) // 閲囪喘鍏ュ簱鍗�
+const returned= (resolve) => require(["@/views/purchaseManage/returned/index"], resolve) // 閲囪喘閫�璐у崟
const appconfig = [
- // {
- // path: "/sales/salesOpportunity",
- // name: "salesOpportunity",
- // component: salesOpportunity,
- // meta: {
- // title: "閿�鍞満浼�"
- // }
- // },
- // {
- // path: "/sales/quotation",
- // name: "quotation",
- // component: quotation,
- // meta: {
- // title: "鎶ヤ环鍗�"
- // }
- // },
- // {
- // path: "/sales/masterOrder",
- // name: "masterOrder",
- // component: masterOrder,
- // meta: {
- // title: "閿�鍞�诲崟"
- // }
- // },
- // {
- // path: "/sales/subOrder",
- // name: "subOrder",
- // component: subOrder,
- // meta: {
- // title: "閿�鍞瓙鍗�"
- // }
- // }
+ {
+ path: "/purchaseManage/purchase",
+ name: "purchase",
+ component: purchase,
+ meta: {
+ title: "閲囪喘绠$悊",
+ requireAuth: true
+ }
+ },
+ {
+ path: "/purchaseManage/quality",
+ name: "quality",
+ component: quality,
+ meta: {
+ title: "閲囪喘璐ㄦ鍗�",
+ requireAuth: true
+ }
+ },
+ {
+ path: "/purchaseManage/warehouse",
+ name: "warehouse",
+ component: warehouse,
+ meta: {
+ title: "閲囪喘鍏ュ簱鍗�",
+ requireAuth: true
+ }
+ },
+ {
+ path: "/purchaseManage/returned",
+ name: "returned",
+ component: returned,
+ meta: {
+ title: "閲囪喘閫�璐у崟",
+ requireAuth: true
+ }
+ }
]
export default appconfig
diff --git a/src/views/purchaseManage/purchase/DetailSupplier.vue b/src/views/purchaseManage/purchase/DetailSupplier.vue
new file mode 100644
index 0000000..c3f9e39
--- /dev/null
+++ b/src/views/purchaseManage/purchase/DetailSupplier.vue
@@ -0,0 +1,569 @@
+<template>
+ <div class="detail-view">
+ <el-drawer
+ :visible.sync="detailConfig.visible"
+ size="80%"
+ :before-close="handleClose"
+ :wrapperClosable="false"
+ >
+ <template slot="title">
+ <div class="header">
+ <span class="header-label">閲囪喘璇︽儏</span>
+ <span class="header-title">{{ detailConfig.infomation.name }}</span>
+ </div>
+ <div class="btn" style="float: right; margin-right: 30px">
+ <el-button type="primary" size="mini" style="margin-right: 5px"
+ >鎵撳嵃</el-button
+ >
+ <el-button type="primary" size="mini" @click="emailClick"
+ >Email閫氱煡涓嬪崟</el-button
+ >
+
+ <el-button
+ type="primary"
+ size="mini"
+ @click="deleteClick"
+ style="margin-right: 5px"
+ >鍒犻櫎</el-button
+ >
+ </div>
+ </template>
+ <div class="content">
+ <div class="info">
+ <ul>
+ <li v-for="(list, i) in formInfoList" :key="i">
+ <span class="content-title">{{ list.str + "锛�" }}</span>
+ <span class="content-data">{{
+ list.value ? list.value : "--"
+ }}</span>
+ </li>
+ </ul>
+ </div>
+ <div class="tab-view">
+ <el-tabs v-model="activeName" @tab-click="tabsClick">
+ <el-tab-pane label="璇︽儏" name="first"></el-tab-pane>
+ </el-tabs>
+ </div>
+ <div v-if="activeName === 'first'" class="detail">
+ <!-- 鍩烘湰淇℃伅 -->
+ <div class="basic-info">
+ <div class="basic-info-label" @click="expandClick('basic')">
+ <i v-if="isBasicExpand" class="el-icon-arrow-down"></i>
+ <i v-else class="el-icon-arrow-up"></i>
+ <span style="margin-left: 10px">鍩烘湰淇℃伅</span>
+ </div>
+ <div v-show="isBasicExpand" class="basic-info-content">
+ <ul>
+ <li v-for="(item, i) in basicInfoList" :key="i">
+ <div class="left">
+ <div class="content-title">{{ item.leftStr + "锛�" }}</div>
+ <div class="content-data">
+ {{ item.leftValue ? item.leftValue : "--" }}
+ </div>
+ </div>
+ <div
+ v-if="item.rightStr && item.rightStr.length > 0"
+ class="right"
+ >
+ <div class="content-title">{{ item.rightStr + "锛�" }}</div>
+ <div class="content-data">
+ {{ item.rightValue ? item.rightValue : "--" }}
+ </div>
+ </div>
+ </li>
+ </ul>
+ <div class="business_scope">
+ <div class="content-title">{{ "澶囨敞淇℃伅锛�" }}</div>
+ <div class="content-data">{{ record ? record : "--" }}</div>
+ </div>
+ </div>
+ </div>
+ <!-- 璐㈠姟淇℃伅 -->
+ <div class="basic-info">
+ <div class="basic-info-label" @click="expandClick('dynamic')">
+ <i v-if="isDynamicExpand" class="el-icon-arrow-down"></i>
+ <i v-else class="el-icon-arrow-up"></i>
+ <span style="margin-left: 10px">璐㈠姟淇℃伅</span>
+ </div>
+ <div v-show="isDynamicExpand" class="basic-info-content">
+ <ul>
+ <li v-for="(item, i) in dynamicInfoList" :key="i">
+ <div class="left">
+ <div class="content-title">{{ item.leftStr + "锛�" }}</div>
+ <div class="content-data">
+ {{ item.leftValue ? item.leftValue : "--" }}
+ </div>
+ </div>
+ <div
+ v-if="item.rightStr && item.rightStr.length > 0"
+ class="right"
+ >
+ <div class="content-title">{{ item.rightStr + "锛�" }}</div>
+ <div class="content-data">
+ {{ item.rightValue ? item.rightValue : "--" }}
+ </div>
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+ <!-- 浜у搧淇℃伅 -->
+ <div class="basic-info">
+ <div class="basic-info-label" @click="expandClick('three')">
+ <i v-if="isExpandThree" class="el-icon-arrow-down"></i>
+ <i v-else class="el-icon-arrow-up"></i>
+ <span style="margin-left: 10px">浜у搧淇℃伅</span>
+ </div>
+ <div v-show="isExpandThree" class="basic-info-content">
+ <TableCommonView
+ style="margin-top: 2px"
+ class="content-table"
+ ref="tableListRef"
+ :showSummary="showSummary"
+ :table-list="tableList"
+ >
+ </TableCommonView>
+ <div class="table-bottom">
+ <div class="table-bottom-item">
+ <div class="table-bottom-l">
+ 鏁村崟鎶樻墸锛氱洿鎺ラ檷浠�
+ </div>
+ <div class="table-bottom-r">0.00</div>
+ </div>
+ <div class="table-bottom-item">
+ <div class="table-bottom-l">
+ 璋冩暣锛氬鍔�
+ </div>
+ <div class="table-bottom-r">0.00</div>
+ </div>
+ <div class="table-bottom-item">
+ <div class="table-bottom-l">
+ 鍚堣
+ </div>
+ <div class="table-bottom-r">26000.00</div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </el-drawer>
+ </div>
+</template>
+
+<script>
+import { getDeleteSalesLeads } from "@/api/client/salesLead";
+export default {
+ name: "DetailSupplier",
+ props: {
+ commonDetail: {
+ type: Object,
+ default: () => {
+ return {
+ visible: false,
+ infomation: {},
+ tableList: [],
+ };
+ },
+ },
+ },
+ components: {},
+ data() {
+ return {
+ detailConfig: this.commonDetail,
+ activeName: "first",
+ formInfoList: [], //淇℃伅
+ isBasicExpand: true, // 鍩烘湰淇℃伅灞曞紑
+ basicInfoList: [],
+ isDynamicExpand: true, // 璐︽埛淇℃伅
+ dynamicInfoList: [],
+ addConfig: {},
+ record: "", // 鏈�鏂拌繘灞�
+ noContactDays: 0,
+ newContactDays: "",
+ isExpandThree: true, //浜у搧淇℃伅
+ tableList: {},
+ showSummary:{
+ show: true,
+ sumProp: ["number", "total"],
+ mergeNumber: 4,
+ totalName:'灏忚'
+ },
+ };
+ },
+ created() {
+ this.setData(this.detailConfig.infomation);
+ this.addConfig = {
+ id_name: "sales_leads_id",
+ id: this.detailConfig.infomation.id,
+ common_name: this.detailConfig.infomation.id,
+ sales_leads_name: this.detailConfig.infomation.name,
+ sales_leads_id: this.detailConfig.infomation.id,
+ };
+ },
+ mounted() {},
+ computed: {},
+ methods: {
+ // email 閫氱煡涓嬪崟
+ emailClick() {},
+ // 鍒犻櫎
+ deleteClick() {
+ this.$confirm("鏄惁鍒犻櫎?", "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ })
+ .then(() => {
+ getDeleteSalesLeads({ ids: this.selValueList }).then((response) => {
+ if (response.code === 200) {
+ this.$message.success("鍒犻櫎鎴愬姛");
+ this.getData();
+ } else {
+ this.$message.warning("鍒犻櫎澶辫触");
+ }
+ });
+ })
+ .catch(() => {});
+ },
+ setData(item) {
+ if (item.FollowRecord && item.FollowRecord.length > 0) {
+ this.record = item.FollowRecord[0].record;
+ console.log(item.FollowRecord[0].follow_time);
+ let follow_time = item.FollowRecord[0].follow_time;
+ this.newContactDays = follow_time.substring(0, 10);
+ this.noContactDays = this.getDiffDay(Date.now(), this.newContactDays);
+ }
+ this.formInfoList = [
+ {
+ str: "渚涘簲鍟嗗悕绉�",
+ value: "",
+ },
+ {
+ str: "鍚堣",
+ value: "",
+ },
+ {
+ str: "宸叉敹绁ㄩ噾棰�",
+ value: "",
+ },
+ {
+ str: "宸蹭粯閲戦",
+ value: "",
+ },
+ {
+ str: "绛剧害鏃ユ湡",
+ value: "",
+ },
+ {
+ str: "閲囪喘璐熻矗浜�",
+ value: "",
+ },
+ {
+ str: "鏈敹绁ㄩ噾棰�",
+ value: "",
+ },
+ {
+ str: "搴斾粯閲戦",
+ value: "",
+ },
+ ];
+ this.basicInfoList = [
+ {
+ leftStr: "閲囪喘璁㈠崟缂栧彿",
+ leftValue: item.number,
+ rightStr: "渚涘簲鍟嗗悕绉�",
+ rightValue: item.name,
+ },
+ {
+ leftStr: "閲囪喘鍗曠姸鎬�",
+ leftValue: item.contact_name,
+ rightStr: "閲囪喘璐熻矗浜�",
+ rightValue: item.contact_position,
+ },
+ {
+ leftStr: "閲囪喘鑱旂郴浜�",
+ leftValue: item.contact_phone,
+ rightStr: "鑱旂郴鐢佃瘽",
+ rightValue: "18513375588",
+ },
+ {
+ leftStr: "绛剧害鏃ユ湡",
+ leftValue: item.sales_resources,
+ rightStr: "浜や粯鏃ユ湡",
+ rightValue: item.member_name,
+ },
+ {
+ leftStr: "鍒拌揣浠撳簱",
+ leftValue: item.sales_resources,
+ rightStr: "",
+ rightValue: "",
+ },
+ ];
+ this.dynamicInfoList = [
+ {
+ leftStr: "鍚堣",
+ leftValue: this.noContactDays,
+ rightStr: "宸叉敹绁ㄩ噾棰�",
+ rightValue: this.newContactDays,
+ },
+ {
+ leftStr: "宸蹭粯鎬婚",
+ leftValue: "",
+ rightStr: "鏈敹绁ㄩ噾棰�",
+ rightValue: "",
+ },
+ {
+ leftStr: "搴斾粯閲戦",
+ leftValue: "",
+ rightStr: "",
+ rightValue: "",
+ },
+ ];
+ this.tableList = {
+ tableInfomation: [
+ {
+ number:1,
+ total:1,
+ }
+ ],
+ selectIndex: true,
+ tableColumn: [
+ { label: "浜у搧鍚嶇О", prop: "number", min: 190, isCommonClick: true },
+ { label: "浜у搧缂栫爜", prop: "total", min: 130, isCommonClick: true },
+ { label: "璁¢噺鍗曚綅", prop: "contact_name", min: 130 },
+ { label: "瑙勬牸鍨嬪彿", prop: "contact_phone", min: 130 },
+ { label: "鏁伴噺", prop: "contact_phone", min: 130 },
+ { label: "閿�鍞崟浠�", prop: "sales_resources", min: 130 },
+ { label: "浠风◣鍚堣", prop: "province", min: 130 },
+ { label: "鎻忚堪", prop: "province", min: 130 },
+ ],
+ };
+ },
+ handleClose() {
+ this.detailConfig.visible = false;
+ },
+ // tab鍒囨崲
+ tabsClick(tab, event) {
+ console.log(tab, event);
+ },
+ // 灞曞紑鏀惰捣鐐瑰嚮浜嬩欢
+ expandClick(value) {
+ console.log(value);
+ if (value === "basic") {
+ this.isBasicExpand = !this.isBasicExpand;
+ } else if (value === "dynamic") {
+ this.isDynamicExpand = !this.isDynamicExpand;
+ } else {
+ this.isExpandThree = !this.isExpandThree;
+ }
+ },
+ // 璁$畻涓や釜鏃ユ湡涔嬮棿鐨勫樊鍊�
+ getDiffDay(date_1, date_2) {
+ let totalDays, diffDate;
+ let myDate_1 = date_1;
+ let myDate_2 = Date.parse(date_2);
+ // 灏嗕袱涓棩鏈熼兘杞崲涓烘绉掓牸寮忥紝鐒跺悗鍋氬樊
+ diffDate = Math.abs(myDate_1 - myDate_2); // 鍙栫浉宸绉掓暟鐨勭粷瀵瑰��
+
+ totalDays = Math.floor(diffDate / (1000 * 3600 * 24)); // 鍚戜笅鍙栨暣
+ // console.log(totalDays)
+
+ return totalDays; // 鐩稿樊鐨勫ぉ鏁�
+ },
+ },
+};
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.detail-view {
+ .header {
+ height: 56px;
+ display: flex;
+ align-items: center;
+ padding-left: 10px;
+ .header-label {
+ padding: 5px;
+ border-radius: 4px;
+ background-color: #ff6600;
+ color: #fff;
+ font-size: 12px;
+ }
+ .header-title {
+ color: #323232;
+ font-size: 15px;
+ margin-left: 10px;
+ font-weight: inherit;
+ }
+ }
+ .content {
+ height: 100%;
+ background-color: rgb(230, 233, 240);
+ padding: 8px;
+ .tab-view {
+ background: #fff;
+ // .tab-view-pane {
+ // position: relative;
+ .item {
+ position: absolute;
+ top: 0px;
+ right: 0px;
+ }
+ // }
+ }
+ .info {
+ width: 100%;
+ height: auto;
+ background: #fff;
+ margin-bottom:10px;
+ ul {
+ width: 100%;
+ height: auto;
+ overflow: hidden;
+ li {
+ width: 25%;
+ float: left;
+ height: 40px;
+ line-height: 40px;
+ font-size: 14px;
+ font-family: PingFangSC;
+ border-bottom: 1px solid #f9f9fb;
+ .content-title {
+ width: 180px;
+ display: inline-block;
+ text-align: right;
+ color: #555;
+ }
+ .content-data {
+ width: calc(100% - 180px - 25px);
+ display: inline-block;
+ text-align: left;
+ margin-left: 25px;
+ color: #333;
+ }
+ }
+ }
+ }
+ .detail {
+ height: calc(100% - 40px - 92px);
+ background: #fff;
+ overflow: auto;
+
+ .basic-info {
+ .basic-info-label {
+ padding-left: 10px;
+ height: 42px;
+ line-height: 42px;
+ background: #f4f8fe;
+ color: #333;
+ font-size: 14px;
+ }
+ .basic-info-content {
+ background: #fff;
+ overflow:hidden;
+ ul {
+ padding-inline-start: 0;
+ }
+ li {
+ display: flex;
+ font-size: 14px;
+ font-family: PingFangSC;
+ border-bottom: 1px solid #f9f9fb;
+ .left,
+ .right {
+ width: 50%;
+ display: flex;
+ align-items: center;
+ height: 40px;
+ .content-title {
+ width: 180px;
+ text-align: right;
+ color: #555;
+ }
+ .content-data {
+ text-align: left;
+ margin-left: 25px;
+ color: #333;
+ }
+ }
+ .remark {
+ width: 100%;
+ }
+ }
+ .business_scope {
+ display: flex;
+ align-items: center;
+ font-size: 14px;
+ min-height: 40px;
+ .content-title {
+ width: 180px;
+ text-align: right;
+ color: #555;
+ }
+ .content-data {
+ flex: 1;
+ padding: 5px;
+ text-align: left;
+ margin-left: 25px;
+ color: #333;
+ }
+ }
+ .table-bottom{
+ width:300px;
+ float:right;
+ margin-right:180px;
+ margin-top:10px;
+ height:auto;
+ line-height:30px;
+ font-size:14px;
+ font-weight: 700;
+ color:#333;
+ .table-bottom-item{
+ width:100%;
+ text-align:right;
+ .table-bottom-l{
+ width:180px;
+ float:left;
+ }
+ .table-bottom-r{
+ width:calc(100% - 180px);
+ float:right;
+ }
+ }
+ }
+ }
+ }
+ }
+ .second {
+ background: #fff;
+ .followup-records {
+ .table-view {
+ margin-top: 0 !important;
+ margin-bottom: 0;
+ }
+ }
+ }
+ }
+}
+::v-deep {
+ .el-drawer__header {
+ padding: 0;
+ margin-bottom: 0px;
+ }
+ .el-tabs--top .el-tabs__item.is-top:nth-child(2) {
+ padding-left: 20px;
+ }
+ .el-tabs__item.is-active {
+ color: $color-primary;
+ }
+ .el-tabs__item:hover {
+ color: $color-primary;
+ }
+ .el-tabs__active-bar {
+ background-color: $color-primary;
+ }
+ .el-tabs__header {
+ margin: 0;
+ }
+}
+</style>
diff --git a/src/views/purchaseManage/purchase/index.vue b/src/views/purchaseManage/purchase/index.vue
new file mode 100644
index 0000000..52a58c6
--- /dev/null
+++ b/src/views/purchaseManage/purchase/index.vue
@@ -0,0 +1,209 @@
+<template>
+ <div class="rightContent">
+ <div class="content-box">
+ <div class="supplier-search">
+ <SearchCommonView
+ ref="searchCommonView"
+ :inputSelect="false"
+ placeholder="鍙緭鍏ヤ緵搴斿晢,鐗╂枡,閲囪喘鍗曠瓑鎼滅储"
+ @searchClick="searchClick"
+ @resetClick="resetClick"
+ />
+ <div class="add-view">
+ <el-button type="primary" size="mini" @click="addBtnClick">鏂板缓</el-button>
+ </div>
+ </div>
+ <template>
+ <TableCommonView
+ class="content-table"
+ ref="tableListRef"
+ :table-list="tableList"
+ @selCommonClick="selCommonClick"
+ >
+ <template slot="tableButton">
+ <el-table-column label="鎿嶄綔" width="120" fixed="right">
+ <template slot-scope="scope">
+ <el-button type="text" size="small" @click="editClick" style="margin-right: 5px"
+ >缂栬緫</el-button
+ >
+ <el-button @click="submitClick(scope.row)" type="text" size="small">鎻愪氦</el-button>
+ </template>
+ </el-table-column>
+ </template>
+ </TableCommonView>
+ <div class="btn-pager">
+ <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" />
+ </div>
+ </template>
+ </div>
+
+ <!-- 鏂板缓/缂栬緫閿�鍞嚎绱� -->
+ <!-- <AddSalesLeadDialog v-if="editSalesLeadConfig.visible" :edit-rightContent-config="editSalesLeadConfig" /> -->
+ <!-- 璇︽儏 -->
+ <DetailSupplier v-if="commonDetail.visible" :common-detail="commonDetail" @submitClick="submitClick" />
+ </div>
+</template>
+
+<script>
+import pageMixin from "@/components/makepager/pager/mixin/pageMixin"
+import { getSalesLeadsList, getDeleteSalesLeads } from "@/api/client/salesLead"
+import DetailSupplier from "@/views/purchaseManage/purchase/DetailSupplier"
+
+export default {
+ name: "SupplierManage",
+ props: {},
+ components: { DetailSupplier },
+ mixins: [pageMixin],
+ computed: {},
+ data() {
+ return {
+ tableList: {}, // 鍒楄〃
+ selValueList: [],
+ commonDetail: {
+ visible: false,
+ infomation: {}
+ },
+ search_map: {}
+ }
+ },
+ created() {
+ this.setTable()
+ this.getData()
+ },
+ methods: {
+ setTable() {
+ this.tableList = {
+ tableInfomation: [],
+ selectIndex: true,
+ tableColumn: [
+ { label: "閲囪喘鍗曞彿", prop: "number", min: 150, isCommonClick: true },
+ { label: "閲囪喘鍗曞悕绉�", prop: "name", min: 130,},
+ { label: "鍗曟嵁绫诲瀷", prop: "contact_name", min: 130 },
+ { label: "渚涘簲鍟嗗悕绉�", prop: "contact_phone", min: 130 },
+ { label: "閲囪喘鏁伴噺", prop: "sales_resources", min: 130 },
+ { label: "鏀惰揣浠撳簱", prop: "province", min: 130 },
+ { label: "缁忓姙浜�", prop: "city", min: 130 },
+ { label: "鍒跺崟浜�", prop: "member_name", min: 130 },
+ { label: "鐘舵��", prop: "member_name", min: 130 },
+ ]
+ }
+ },
+ // 璇锋眰鏁版嵁
+ async getData() {
+ await getSalesLeadsList({
+ search_map: this.search_map,
+ page: this.pagerOptions.currPage,
+ pageSize: this.pagerOptions.pageSize
+ })
+ .then((res) => {
+ const list = res.data.list.map((item) => {
+ return {
+ ...item,
+ province: item.Province.name,
+ city: item.City.name,
+ sales_resources: item.sales_sources.name,
+ member_name: item.member.username
+ }
+ })
+ this.tableList.tableInfomation = list || []
+ this.pagerOptions.totalCount = res.data.count
+ })
+ .catch((err) => {
+ console.log(err)
+ })
+ },
+ // 鎼滅储
+ searchClick(val, content) {
+ console.log(val, content)
+ this.search_map = {
+ [val.value]: content
+ }
+ this.getData()
+ },
+ resetClick() {
+ this.search_map = {}
+ this.getData()
+ },
+ // 鏂板缓
+ addBtnClick() {},
+ // 缂栬緫
+ editClick(){
+
+ },
+ // 纭鍙戣揣
+ submitClick() {
+ this.$confirm("鏄惁鎻愪氦?", "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning"
+ })
+ .then(() => {
+ console.log("dddd")
+ getDeleteSalesLeads({ ids: this.selValueList }).then((response) => {
+ if (response.code === 200) {
+ this.$message.success("鎻愪氦鎴愬姛")
+ this.getData()
+ } else {
+ this.$message.warning("鎻愪氦澶辫触")
+ }
+ })
+ })
+ .catch(() => {})
+ },
+
+ // 璇︽儏
+ selCommonClick(row) {
+ console.log(row)
+ this.commonDetail.visible = true
+ this.commonDetail.infomation = { ...row }
+ }
+ }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.rightContent {
+ width:100%;
+ height:calc(100% - 10px);
+ .content-box {
+ height:100%;
+ .supplier-search {
+ display: flex;
+ align-items: center;
+ .add-view {
+ margin-left: auto;
+ margin-right: 20px;
+ }
+ }
+ .content-table{
+ // height:calc(100% - 60px - 42px);
+ }
+ .btn-pager {
+ display: flex;
+ .page {
+ margin-left: auto;
+ }
+ }
+ }
+ .bottom {
+ .product-search {
+ display: flex;
+ align-items: center;
+ .search {
+ margin-left: auto;
+ }
+ .add-view {
+ margin-left: 20px;
+ margin-right: 20px;
+ }
+ }
+ .btn-pager {
+ display: flex;
+ .page {
+ margin-left: auto;
+ }
+ }
+ }
+}
+</style>
diff --git a/src/views/purchaseManage/quality/DetailSupplier.vue b/src/views/purchaseManage/quality/DetailSupplier.vue
new file mode 100644
index 0000000..054e824
--- /dev/null
+++ b/src/views/purchaseManage/quality/DetailSupplier.vue
@@ -0,0 +1,338 @@
+<template>
+ <div class="detail-view">
+ <el-drawer :visible.sync="detailConfig.visible" size="80%" :before-close="handleClose" :wrapperClosable="false">
+ <template slot="title">
+ <div class="header">
+ <span class="header-label">璐ㄦ鍗曡鎯�</span>
+ <span class="header-title">{{ detailConfig.infomation.name }}</span>
+ </div>
+ <div class="btn" style="float:right;margin-right:30px;">
+ <el-button type="primary" size="mini" @click="qualityClick" icon="el-icon-search" style="margin-right: 5px"
+ >鎵撳嵃</el-button
+ >
+ <el-button type="primary" size="mini" icon="el-icon-refresh-left" @click="qualityClick">鍘昏川妫�</el-button>
+ </div>
+ </template>
+ <div class="content">
+ <div class="tab-view">
+ <el-tabs v-model="activeName">
+ <el-tab-pane label="璇︽儏" name="first"></el-tab-pane>
+
+ </el-tabs>
+ </div>
+ <div v-if="activeName === 'first'" class="detail">
+ <!-- 鍩烘湰淇℃伅 -->
+ <div class="basic-info">
+ <div class="basic-info-label" @click="expandClick('basic')">
+ <i v-if="isBasicExpand" class="el-icon-arrow-down"></i>
+ <i v-else class="el-icon-arrow-up"></i>
+ <span style="margin-left: 10px">鍩烘湰淇℃伅</span>
+ </div>
+ <div v-show="isBasicExpand" class="basic-info-content">
+ <ul>
+ <li v-for="(item, i) in basicInfoList" :key="i">
+ <div class="left">
+ <div class="content-title">{{ item.leftStr + "锛�" }}</div>
+ <div class="content-data">{{ item.leftValue ? item.leftValue : "--" }}</div>
+ </div>
+ <div v-if="item.rightStr && item.rightStr.length > 0" class="right">
+ <div class="content-title">{{ item.rightStr + "锛�" }}</div>
+ <div class="content-data">{{ item.rightValue ? item.rightValue : "--" }}</div>
+ </div>
+ </li>
+ </ul>
+ <div class="business_scope">
+ <div class="content-title">{{ "澶囨敞淇℃伅锛�" }}</div>
+ <div class="content-data">{{ record ? record : "--" }}</div>
+ </div>
+ </div>
+ </div>
+ <!-- 璐︽埛淇℃伅 -->
+ <div class="basic-info">
+ <div class="basic-info-label" @click="expandClick('dynamic')">
+ <i v-if="isDynamicExpand" class="el-icon-arrow-down"></i>
+ <i v-else class="el-icon-arrow-up"></i>
+ <span style="margin-left: 10px">浜у搧淇℃伅</span>
+ </div>
+ <div v-show="isDynamicExpand" class="basic-info-content">
+ <TableCommonView
+ style='margin-top:2px;'
+ class="content-table"
+ ref="tableListRef"
+ :table-list="tableList"
+ >
+ </TableCommonView>
+ </div>
+ </div>
+ </div>
+
+ </div>
+ </el-drawer>
+ </div>
+</template>
+
+<script>
+export default {
+ name: "DetailSupplier",
+ props: {
+ commonDetail: {
+ type: Object,
+ default: () => {
+ return {
+ visible: false,
+ infomation: {},
+ tableList:[],
+ }
+ }
+ }
+ },
+ components: {},
+ computed: {},
+ data() {
+ return {
+ detailConfig: this.commonDetail,
+ activeName: "first",
+ isBasicExpand: true, // 鍩烘湰淇℃伅灞曞紑
+ basicInfoList: [],
+ isDynamicExpand: true, // 浜у搧淇℃伅
+ tableList: [],
+ addConfig: {},
+ record: "", // 鏈�鏂拌繘灞�
+ }
+ },
+ created() {
+ this.setData(this.detailConfig.infomation)
+ this.addConfig = {
+ id_name: "sales_leads_id",
+ id: this.detailConfig.infomation.id,
+ common_name: this.detailConfig.infomation.id,
+ sales_leads_name: this.detailConfig.infomation.name,
+ sales_leads_id: this.detailConfig.infomation.id
+ }
+ },
+ mounted() {},
+ methods: {
+ // 鍘昏川妫�
+ qualityClick(){
+ this.$emit('qualityClick')
+ },
+ setData(item) {
+ if (item.FollowRecord && item.FollowRecord.length > 0) {
+ this.record = item.FollowRecord[0].record
+ console.log(item.FollowRecord[0].follow_time)
+ }
+ this.basicInfoList = [
+ {
+ leftStr: "閲囪喘璐ㄦ鍗曠紪鍙�",
+ leftValue: item.number,
+ rightStr: "璐ㄦ鐘舵��",
+ rightValue: item.name
+ },
+ {
+ leftStr: "閲囪喘鍗曠紪鍙�",
+ leftValue: item.contact_name,
+ rightStr: "璐ㄦ鍛�",
+ rightValue: item.contact_position
+ },
+ {
+ leftStr: "渚涘簲鍟嗗悕绉�",
+ leftValue: item.contact_phone,
+ rightStr: "鍒拌揣浠撳簱",
+ rightValue: "18513375588"
+ },
+ {
+ leftStr: "鐗╂祦鍏徃",
+ leftValue: item.sales_resources,
+ rightStr: "鍒涘缓鏃堕棿",
+ rightValue: item.member_name
+ },
+ {
+ leftStr: "鐗╂祦鍗曞彿",
+ leftValue: item.sales_resources,
+ rightStr: "",
+ rightValue: ""
+ }
+ ]
+ this.tableList = {
+ tableInfomation: [],
+ selectIndex: true,
+ tableColumn: [
+ { label: "浜у搧鍚嶇О", prop: "number", min: 190, isCommonClick: true },
+ { label: "浜у搧缂栫爜", prop: "name", min: 130, isCommonClick: true},
+ { label: "璁¢噺鍗曚綅", prop: "contact_name", min: 130 },
+ { label: "瑙勬牸鍨嬪彿", prop: "contact_phone", min: 130 },
+ { label: "鍒拌揣鏁伴噺", prop: "contact_phone", min: 130 },
+ { label: "鍚堟牸鏁伴噺", prop: "sales_resources", min: 130 },
+ { label: "涓嶅悎鏍兼暟閲�", prop: "province", min: 130 },
+ ]
+ }
+ },
+ handleClose() {
+ this.detailConfig.visible = false
+ },
+
+ // 灞曞紑鏀惰捣鐐瑰嚮浜嬩欢
+ expandClick(value) {
+ console.log(value)
+ if (value === "basic") {
+ this.isBasicExpand = !this.isBasicExpand
+ } else if (value === "dynamic") {
+ this.isDynamicExpand = !this.isDynamicExpand
+ }
+ },
+ // 璁$畻涓や釜鏃ユ湡涔嬮棿鐨勫樊鍊�
+ getDiffDay(date_1, date_2) {
+ let totalDays, diffDate
+ let myDate_1 = date_1
+ let myDate_2 = Date.parse(date_2)
+ // 灏嗕袱涓棩鏈熼兘杞崲涓烘绉掓牸寮忥紝鐒跺悗鍋氬樊
+ diffDate = Math.abs(myDate_1 - myDate_2) // 鍙栫浉宸绉掓暟鐨勭粷瀵瑰��
+
+ totalDays = Math.floor(diffDate / (1000 * 3600 * 24)) // 鍚戜笅鍙栨暣
+ // console.log(totalDays)
+
+ return totalDays // 鐩稿樊鐨勫ぉ鏁�
+ }
+ }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.detail-view {
+ .header {
+ height: 56px;
+ display: flex;
+ align-items: center;
+ padding-left: 10px;
+ .header-label {
+ padding: 5px;
+ border-radius: 4px;
+ background-color: #ff6600;
+ color: #fff;
+ font-size: 12px;
+ }
+ .header-title {
+ color: #323232;
+ font-size: 15px;
+ margin-left: 10px;
+ font-weight: inherit;
+ }
+ }
+ .content {
+ height:100%;
+ background-color: rgb(230, 233, 240);
+ padding: 8px;
+ .tab-view {
+ background: #fff;
+ // .tab-view-pane {
+ // position: relative;
+ .item {
+ position: absolute;
+ top: 0px;
+ right: 0px;
+ }
+ // }
+ }
+ .detail {
+ height:calc(100% - 40px);
+ background:#fff;
+ overflow:auto;
+ .basic-info {
+ .basic-info-label {
+ padding-left: 10px;
+ height: 42px;
+ line-height: 42px;
+ background: #f4f8fe;
+ color: #333;
+ font-size: 14px;
+ }
+ .basic-info-content {
+ background: #fff;
+ ul {
+ padding-inline-start: 0;
+ }
+ li {
+ display: flex;
+ font-size: 14px;
+ font-family: PingFangSC;
+ border-bottom: 1px solid #f9f9fb;
+ .left,
+ .right {
+ width: 50%;
+ display: flex;
+ align-items: center;
+ height: 40px;
+ .content-title {
+ width: 180px;
+ text-align: right;
+ color: #555;
+ }
+ .content-data {
+ text-align: left;
+ margin-left: 25px;
+ color: #333;
+ }
+ }
+ .remark {
+ width: 100%;
+ }
+ }
+ .business_scope {
+ display: flex;
+ align-items: center;
+ font-size: 14px;
+ min-height: 40px;
+ .content-title {
+ width: 180px;
+ text-align: right;
+ color: #555;
+ }
+ .content-data {
+ flex: 1;
+ padding: 5px;
+ text-align: left;
+ margin-left: 25px;
+ color: #333;
+ }
+ }
+ }
+ }
+ }
+ .second {
+ background: #fff;
+ .followup-records {
+ .table-view {
+ margin-top: 0 !important;
+ margin-bottom: 0;
+ }
+ }
+ }
+ }
+}
+::v-deep .el-drawer__body{
+ height:calc(100% - 60px)!important;
+ }
+::v-deep {
+ .el-drawer__header {
+ padding: 0;
+ margin-bottom: 0px;
+ }
+
+ .el-tabs--top .el-tabs__item.is-top:nth-child(2) {
+ padding-left: 20px;
+ }
+ .el-tabs__item.is-active {
+ color: $color-primary;
+ }
+ .el-tabs__item:hover {
+ color: $color-primary;
+ }
+ .el-tabs__active-bar {
+ background-color: $color-primary;
+ }
+ .el-tabs__header {
+ margin: 0;
+ }
+}
+</style>
diff --git a/src/views/purchaseManage/quality/index.vue b/src/views/purchaseManage/quality/index.vue
new file mode 100644
index 0000000..9a987ef
--- /dev/null
+++ b/src/views/purchaseManage/quality/index.vue
@@ -0,0 +1,205 @@
+<template>
+ <div class="rightContent">
+ <div class="content-box">
+ <div class="supplier-search">
+ <SearchCommonView
+ ref="searchCommonView"
+ :inputSelect="false"
+ placeholder="鍙緭鍏ヤ緵搴斿晢,鐗╂枡,閲囪喘鍗曠瓑鎼滅储"
+ @searchClick="searchClick"
+ @resetClick="resetClick"
+ />
+ </div>
+ <template>
+ <TableCommonView
+ class="content-table"
+ ref="tableListRef"
+ :table-list="tableList"
+ @selCommonClick="selCommonClick"
+ @getSelectArray="getSelectArray"
+ >
+ <template slot="tableButton">
+ <el-table-column label="鎿嶄綔" width="120" fixed="right">
+ <template slot-scope="scope">
+ <el-button @click="qualityClick(scope.row)" type="text" size="small">鍘昏川妫�</el-button>
+ </template>
+ </el-table-column>
+ </template>
+ </TableCommonView>
+ <div class="btn-pager">
+ <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" />
+ </div>
+ </template>
+ </div>
+
+ <!-- 鏂板缓/缂栬緫閿�鍞嚎绱� -->
+ <!-- <AddSalesLeadDialog v-if="editSalesLeadConfig.visible" :edit-rightContent-config="editSalesLeadConfig" /> -->
+ <!-- 璇︽儏 -->
+ <DetailSupplier v-if="commonDetail.visible" :common-detail="commonDetail" @qualityClick="qualityClick" />
+ </div>
+</template>
+
+<script>
+import pageMixin from "@/components/makepager/pager/mixin/pageMixin"
+import { getSalesLeadsList, getDeleteSalesLeads } from "@/api/client/salesLead"
+import DetailSupplier from "@/views/purchaseManage/quality/DetailSupplier"
+
+export default {
+ name: "SupplierManage",
+ props: {},
+ components: { DetailSupplier },
+ mixins: [pageMixin],
+ computed: {},
+ data() {
+ return {
+ tableList: {}, // 鍒楄〃
+ selValueList: [],
+ commonDetail: {
+ visible: false,
+ infomation: {}
+ },
+ search_map: {}
+ }
+ },
+ created() {
+ this.setTable()
+ this.getData()
+ },
+ methods: {
+ setTable() {
+ this.tableList = {
+ tableInfomation: [],
+ selectIndex: true,
+ tableColumn: [
+ { label: "璐ㄦ鍗曠紪鍙�", prop: "number", min: 190, isCommonClick: true },
+ { label: "閲囪喘鍗曠紪鍙�", prop: "name", min: 130, isCommonClick: true},
+ { label: "鍗曟嵁绫诲瀷", prop: "contact_name", min: 130 },
+ { label: "渚涘簲鍟嗗悕绉�", prop: "contact_phone", min: 130 },
+ { label: "鍒拌揣浠撳簱", prop: "sales_resources", min: 130 },
+ { label: "璐ㄦ鏁伴噺", prop: "province", min: 130 },
+ { label: "妫�楠屽憳", prop: "city", min: 130 },
+ { label: "鐘舵��", prop: "member_name", min: 110 },
+ { label: "璐ㄦ鏃堕棿", prop: "member_name", min: 150 },
+ ]
+ }
+ },
+ // 璇锋眰鏁版嵁
+ async getData() {
+ await getSalesLeadsList({
+ search_map: this.search_map,
+ page: this.pagerOptions.currPage,
+ pageSize: this.pagerOptions.pageSize
+ })
+ .then((res) => {
+ const list = res.data.list.map((item) => {
+ return {
+ ...item,
+ province: item.Province.name,
+ city: item.City.name,
+ sales_resources: item.sales_sources.name,
+ member_name: item.member.username
+ }
+ })
+ this.tableList.tableInfomation = list || []
+ this.pagerOptions.totalCount = res.data.count
+ })
+ .catch((err) => {
+ console.log(err)
+ })
+ },
+ // 鎼滅储
+ searchClick(val, content) {
+ console.log(val, content)
+ this.search_map = {
+ [val.value]: content
+ }
+ this.getData()
+ },
+ resetClick() {
+ this.search_map = {}
+ this.getData()
+ },
+
+ // 纭鍙戣揣
+ qualityClick() {
+ this.$confirm("鏄惁璐ㄦ?", "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning"
+ })
+ .then(() => {
+ console.log("dddd")
+ getDeleteSalesLeads({ ids: this.selValueList }).then((response) => {
+ if (response.code === 200) {
+ this.$message.success("纭鍙戣揣鎴愬姛")
+ this.getData()
+ } else {
+ this.$message.warning("纭鍙戣揣澶辫触")
+ }
+ })
+ })
+ .catch(() => {})
+ },
+ getSelectArray(val) {
+ this.selValueList = []
+ const list = val.map((item) => {
+ return item.id
+ })
+ this.selValueList = list
+ },
+ // 璇︽儏
+ selCommonClick(row) {
+ console.log(row)
+ this.commonDetail.visible = true
+ this.commonDetail.infomation = { ...row }
+ }
+ }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.rightContent {
+ width:100%;
+ height:calc(100% - 10px);
+ .content-box {
+ height:100%;
+ .supplier-search {
+ display: flex;
+ align-items: center;
+ .add-view {
+ margin-left: auto;
+ margin-right: 20px;
+ }
+ }
+ .content-table{
+ // height:calc(100% - 60px - 42px);
+ }
+ .btn-pager {
+ display: flex;
+ .page {
+ margin-left: auto;
+ }
+ }
+ }
+ .bottom {
+ .product-search {
+ display: flex;
+ align-items: center;
+ .search {
+ margin-left: auto;
+ }
+ .add-view {
+ margin-left: 20px;
+ margin-right: 20px;
+ }
+ }
+ .btn-pager {
+ display: flex;
+ .page {
+ margin-left: auto;
+ }
+ }
+ }
+}
+</style>
diff --git a/src/views/purchaseManage/returned/DetailSupplier.vue b/src/views/purchaseManage/returned/DetailSupplier.vue
new file mode 100644
index 0000000..5db62d2
--- /dev/null
+++ b/src/views/purchaseManage/returned/DetailSupplier.vue
@@ -0,0 +1,352 @@
+<template>
+ <div class="detail-view">
+ <el-drawer :visible.sync="detailConfig.visible" size="80%" :before-close="handleClose" :wrapperClosable="false">
+ <template slot="title">
+ <div class="header">
+ <span class="header-label">閲囪喘閫�璐у崟</span>
+ <span class="header-title">{{ detailConfig.infomation.name }}</span>
+ </div>
+ </template>
+ <div class="content">
+ <div class="tab-view">
+ <el-tabs v-model="activeName">
+ <el-tab-pane label="璇︽儏" name="first"></el-tab-pane>
+
+ </el-tabs>
+ </div>
+ <div v-if="activeName === 'first'" class="detail">
+ <!-- 鍩烘湰淇℃伅 -->
+ <div class="basic-info">
+ <div class="basic-info-label" @click="expandClick('basic')">
+ <i v-if="isBasicExpand" class="el-icon-arrow-down"></i>
+ <i v-else class="el-icon-arrow-up"></i>
+ <span style="margin-left: 10px">鍩烘湰淇℃伅</span>
+ </div>
+ <div v-show="isBasicExpand" class="basic-info-content">
+ <ul>
+ <li v-for="(item, i) in basicInfoList" :key="i">
+ <div class="left">
+ <div class="content-title">{{ item.leftStr + "锛�" }}</div>
+ <div class="content-data">{{ item.leftValue ? item.leftValue : "--" }}</div>
+ </div>
+ <div v-if="item.rightStr && item.rightStr.length > 0" class="right">
+ <div class="content-title">{{ item.rightStr + "锛�" }}</div>
+ <div class="content-data">{{ item.rightValue ? item.rightValue : "--" }}</div>
+ </div>
+ </li>
+ </ul>
+ <div class="business_scope">
+ <div class="content-title">{{ "閫�璐у娉細" }}</div>
+ <div class="content-data">{{ record ? record : "--" }}</div>
+ </div>
+ </div>
+ </div>
+ <!-- 璐︽埛淇℃伅 -->
+ <div class="basic-info">
+ <div class="basic-info-label" @click="expandClick('dynamic')">
+ <i v-if="isDynamicExpand" class="el-icon-arrow-down"></i>
+ <i v-else class="el-icon-arrow-up"></i>
+ <span style="margin-left: 10px">浜у搧淇℃伅</span>
+ </div>
+ <div v-show="isDynamicExpand" class="basic-info-content">
+ <TableCommonView
+ style='margin-top:2px;'
+ class="content-table"
+ ref="tableListRef"
+ :table-list="tableList"
+ :showSummary="showSummary"
+ >
+ </TableCommonView>
+ </div>
+ </div>
+ </div>
+
+ </div>
+ </el-drawer>
+ </div>
+</template>
+
+<script>
+export default {
+ name: "DetailSupplier",
+ props: {
+ commonDetail: {
+ type: Object,
+ default: () => {
+ return {
+ visible: false,
+ infomation: {},
+ tableList:{},
+ showSummary:{
+ show: true,
+ sumProp: ["number", "total"],
+ mergeNumber: 4,
+ totalName:'灏忚'
+ },
+ }
+ }
+ }
+ },
+ components: {},
+ computed: {},
+ data() {
+ return {
+ detailConfig: this.commonDetail,
+ activeName: "first",
+ isBasicExpand: true, // 鍩烘湰淇℃伅灞曞紑
+ basicInfoList: [],
+ isDynamicExpand: true, // 浜у搧淇℃伅
+ tableList: [],
+ addConfig: {},
+ record: "", // 鏈�鏂拌繘灞�
+ }
+ },
+ created() {
+ this.setData(this.detailConfig.infomation)
+ this.addConfig = {
+ id_name: "sales_leads_id",
+ id: this.detailConfig.infomation.id,
+ common_name: this.detailConfig.infomation.id,
+ sales_leads_name: this.detailConfig.infomation.name,
+ sales_leads_id: this.detailConfig.infomation.id
+ }
+ },
+ mounted() {},
+ methods: {
+ setData(item) {
+ if (item.FollowRecord && item.FollowRecord.length > 0) {
+ this.record = item.FollowRecord[0].record
+ console.log(item.FollowRecord[0].follow_time)
+ }
+ this.basicInfoList = [
+ {
+ leftStr: "閲囪喘閫�璐у崟缂栧彿",
+ leftValue: item.number,
+ rightStr: "渚涘簲鍟嗗悕绉�",
+ rightValue: item.name
+ },
+ {
+ leftStr: "璐ㄦ鍗曠紪鍙�",
+ leftValue: item.contact_name,
+ rightStr: "璐ㄦ鍛�",
+ rightValue: item.contact_position
+ },
+ {
+ leftStr: "閫�璐у崟鐘舵��",
+ leftValue: item.contact_phone,
+ rightStr: "閫�璐ф棩鏈�",
+ rightValue: "18513375588"
+ },
+ {
+ leftStr: "閫�璐т粨搴�",
+ leftValue: item.sales_resources,
+ rightStr: "缁忓姙浜�",
+ rightValue: item.member_name
+ },
+ {
+ leftStr: "鍒跺崟浜�",
+ leftValue: item.sales_resources,
+ rightStr: "璐ц繍鍏徃",
+ rightValue: ""
+ },
+ {
+ leftStr: "璐ㄦ鏃ユ湡",
+ leftValue: item.sales_resources,
+ rightStr: "鐗╂祦鍗曞彿",
+ rightValue: ""
+ },
+ {
+ leftStr: "閫�璐у師鍥�",
+ leftValue: item.sales_resources,
+ rightStr: "閫�璐у湴鍧�",
+ rightValue: ""
+ },
+ {
+ leftStr: "閫�璐ц仈绯讳汉",
+ leftValue: item.sales_resources,
+ rightStr: "",
+ rightValue: ""
+ }
+ ]
+ this.tableList = {
+ tableInfomation: [],
+ selectIndex: true,
+ tableColumn: [
+ { label: "浜у搧鍚嶇О", prop: "number", min: 190, isCommonClick: true },
+ { label: "浜у搧缂栫爜", prop: "name", min: 130, isCommonClick: true},
+ { label: "璁¢噺鍗曚綅", prop: "contact_name", min: 130 },
+ { label: "瑙勬牸鍨嬪彿", prop: "contact_phone", min: 130 },
+ { label: "閲囪喘鏁伴噺", prop: "sales_resources", min: 130 },
+ { label: "閫�璐ф暟閲�", prop: "province", min: 130 },
+ ]
+ }
+ },
+ handleClose() {
+ this.detailConfig.visible = false
+ },
+
+ // 灞曞紑鏀惰捣鐐瑰嚮浜嬩欢
+ expandClick(value) {
+ console.log(value)
+ if (value === "basic") {
+ this.isBasicExpand = !this.isBasicExpand
+ } else if (value === "dynamic") {
+ this.isDynamicExpand = !this.isDynamicExpand
+ }
+ },
+ // 璁$畻涓や釜鏃ユ湡涔嬮棿鐨勫樊鍊�
+ getDiffDay(date_1, date_2) {
+ let totalDays, diffDate
+ let myDate_1 = date_1
+ let myDate_2 = Date.parse(date_2)
+ // 灏嗕袱涓棩鏈熼兘杞崲涓烘绉掓牸寮忥紝鐒跺悗鍋氬樊
+ diffDate = Math.abs(myDate_1 - myDate_2) // 鍙栫浉宸绉掓暟鐨勭粷瀵瑰��
+
+ totalDays = Math.floor(diffDate / (1000 * 3600 * 24)) // 鍚戜笅鍙栨暣
+ // console.log(totalDays)
+
+ return totalDays // 鐩稿樊鐨勫ぉ鏁�
+ }
+ }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.detail-view {
+ .header {
+ height: 56px;
+ display: flex;
+ align-items: center;
+ padding-left: 10px;
+ .header-label {
+ padding: 5px;
+ border-radius: 4px;
+ background-color: #ff6600;
+ color: #fff;
+ font-size: 12px;
+ }
+ .header-title {
+ color: #323232;
+ font-size: 15px;
+ margin-left: 10px;
+ font-weight: inherit;
+ }
+ }
+ .content {
+ height:100%;
+ background-color: rgb(230, 233, 240);
+ padding: 8px;
+ .tab-view {
+ background: #fff;
+ // .tab-view-pane {
+ // position: relative;
+ .item {
+ position: absolute;
+ top: 0px;
+ right: 0px;
+ }
+ // }
+ }
+ .detail {
+ height:calc(100% - 40px);
+ background:#fff;
+ overflow:auto;
+ .basic-info {
+ .basic-info-label {
+ padding-left: 10px;
+ height: 42px;
+ line-height: 42px;
+ background: #f4f8fe;
+ color: #333;
+ font-size: 14px;
+ }
+ .basic-info-content {
+ background: #fff;
+ ul {
+ padding-inline-start: 0;
+ }
+ li {
+ display: flex;
+ font-size: 14px;
+ font-family: PingFangSC;
+ border-bottom: 1px solid #f9f9fb;
+ .left,
+ .right {
+ width: 50%;
+ display: flex;
+ align-items: center;
+ height: 40px;
+ .content-title {
+ width: 180px;
+ text-align: right;
+ color: #555;
+ }
+ .content-data {
+ text-align: left;
+ margin-left: 25px;
+ color: #333;
+ }
+ }
+ .remark {
+ width: 100%;
+ }
+ }
+ .business_scope {
+ display: flex;
+ align-items: center;
+ font-size: 14px;
+ min-height: 40px;
+ .content-title {
+ width: 180px;
+ text-align: right;
+ color: #555;
+ }
+ .content-data {
+ flex: 1;
+ padding: 5px;
+ text-align: left;
+ margin-left: 25px;
+ color: #333;
+ }
+ }
+ }
+ }
+ }
+ .second {
+ background: #fff;
+ .followup-records {
+ .table-view {
+ margin-top: 0 !important;
+ margin-bottom: 0;
+ }
+ }
+ }
+ }
+}
+::v-deep .el-drawer__body{
+ height:calc(100% - 60px)!important;
+ }
+::v-deep {
+ .el-drawer__header {
+ padding: 0;
+ margin-bottom: 0px;
+ }
+
+ .el-tabs--top .el-tabs__item.is-top:nth-child(2) {
+ padding-left: 20px;
+ }
+ .el-tabs__item.is-active {
+ color: $color-primary;
+ }
+ .el-tabs__item:hover {
+ color: $color-primary;
+ }
+ .el-tabs__active-bar {
+ background-color: $color-primary;
+ }
+ .el-tabs__header {
+ margin: 0;
+ }
+}
+</style>
diff --git a/src/views/purchaseManage/returned/index.vue b/src/views/purchaseManage/returned/index.vue
new file mode 100644
index 0000000..f5d798d
--- /dev/null
+++ b/src/views/purchaseManage/returned/index.vue
@@ -0,0 +1,207 @@
+<template>
+ <div class="rightContent">
+ <div class="content-box">
+ <div class="supplier-search">
+ <SearchCommonView
+ ref="searchCommonView"
+ :inputSelect="false"
+ placeholder="鍙緭鍏ラ噰璐崟,渚涘簲鍟嗗悕绉扮瓑鎼滅储"
+ @searchClick="searchClick"
+ @resetClick="resetClick"
+ />
+
+ </div>
+ <template>
+ <TableCommonView
+ class="content-table"
+ ref="tableListRef"
+ :table-list="tableList"
+ @selCommonClick="selCommonClick"
+ @getSelectArray="getSelectArray"
+ >
+ <template slot="tableButton">
+ <el-table-column label="鎿嶄綔" width="120">
+ <template slot-scope="scope">
+ <el-button @click="confirmClick(scope.row)" type="text" size="small">纭鍙戣揣</el-button>
+ </template>
+ </el-table-column>
+ </template>
+ </TableCommonView>
+ <div class="btn-pager">
+ <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" />
+ </div>
+ </template>
+ </div>
+
+ <!-- 鏂板缓/缂栬緫閿�鍞嚎绱� -->
+ <!-- <AddSalesLeadDialog v-if="editSalesLeadConfig.visible" :edit-rightContent-config="editSalesLeadConfig" /> -->
+ <!-- 璇︽儏 -->
+ <DetailSupplier v-if="commonDetail.visible" :common-detail="commonDetail" />
+ </div>
+</template>
+
+<script>
+import pageMixin from "@/components/makepager/pager/mixin/pageMixin"
+import { getSalesLeadsList, getDeleteSalesLeads } from "@/api/client/salesLead"
+import DetailSupplier from "@/views/purchaseManage/returned/DetailSupplier"
+
+export default {
+ name: "SupplierManage",
+ props: {},
+ components: { DetailSupplier },
+ mixins: [pageMixin],
+ computed: {},
+ data() {
+ return {
+ tableList: {}, // 鍒楄〃
+ selValueList: [],
+ commonDetail: {
+ visible: false,
+ infomation: {}
+ },
+ search_map: {}
+ }
+ },
+ created() {
+ this.setTable()
+ this.getData()
+ },
+ methods: {
+ setTable() {
+ this.tableList = {
+ tableInfomation: [],
+ selectIndex: true,
+ tableColumn: [
+ { label: "閫�璐у崟缂栧彿", prop: "number", min: 190, isCommonClick: true },
+ { label: "閲囪喘鍗曠紪鍙�", prop: "name", min: 130, isCommonClick: true},
+ { label: "鍗曟嵁绫诲瀷", prop: "contact_name", min: 130 },
+ { label: "渚涘簲鍟嗗悕绉�", prop: "contact_phone", min: 130 },
+ { label: "閫�璐т粨搴�", prop: "sales_resources", min: 130 },
+ { label: "閫�璐х悊鐢�", prop: "province", min: 180 },
+ { label: "缁忓姙浜�", prop: "city", min: 130 },
+ { label: "鍒跺崟浜�", prop: "member_name", min: 130 },
+ { label: "閫�璐ф棩鏈�", prop: "member_name", min: 150 },
+ { label: "鐘舵��", prop: "member_name", min: 110 }
+ ]
+ }
+ },
+ // 璇锋眰鏁版嵁
+ async getData() {
+ await getSalesLeadsList({
+ search_map: this.search_map,
+ page: this.pagerOptions.currPage,
+ pageSize: this.pagerOptions.pageSize
+ })
+ .then((res) => {
+ const list = res.data.list.map((item) => {
+ return {
+ ...item,
+ province: item.Province.name,
+ city: item.City.name,
+ sales_resources: item.sales_sources.name,
+ member_name: item.member.username
+ }
+ })
+ this.tableList.tableInfomation = list || []
+ this.pagerOptions.totalCount = res.data.count
+ })
+ .catch((err) => {
+ console.log(err)
+ })
+ },
+ // 鎼滅储
+ searchClick(val, content) {
+ console.log(val, content)
+ this.search_map = {
+ [val.value]: content
+ }
+ this.getData()
+ },
+ resetClick() {
+ this.search_map = {}
+ this.getData()
+ },
+
+ // 纭鍙戣揣
+ confirmClick() {
+ this.$confirm("鏄惁纭鍙戣揣?", "璀﹀憡", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning"
+ })
+ .then(() => {
+ console.log("dddd")
+ getDeleteSalesLeads({ ids: this.selValueList }).then((response) => {
+ if (response.code === 200) {
+ this.$message.success("纭鍙戣揣鎴愬姛")
+ this.getData()
+ } else {
+ this.$message.warning("纭鍙戣揣澶辫触")
+ }
+ })
+ })
+ .catch(() => {})
+ },
+ getSelectArray(val) {
+ this.selValueList = []
+ const list = val.map((item) => {
+ return item.id
+ })
+ this.selValueList = list
+ },
+ // 璇︽儏
+ selCommonClick(row) {
+ console.log(row)
+ this.commonDetail.visible = true
+ this.commonDetail.infomation = { ...row }
+ }
+ }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.rightContent {
+ width:100%;
+ height:calc(100% - 10px);
+ .content-box {
+ height:100%;
+ .supplier-search {
+ display: flex;
+ align-items: center;
+ .add-view {
+ margin-left: auto;
+ margin-right: 20px;
+ }
+ }
+ .content-table{
+ // height:calc(100% - 60px - 42px);
+ }
+ .btn-pager {
+ display: flex;
+ .page {
+ margin-left: auto;
+ }
+ }
+ }
+ .bottom {
+ .product-search {
+ display: flex;
+ align-items: center;
+ .search {
+ margin-left: auto;
+ }
+ .add-view {
+ margin-left: 20px;
+ margin-right: 20px;
+ }
+ }
+ .btn-pager {
+ display: flex;
+ .page {
+ margin-left: auto;
+ }
+ }
+ }
+}
+</style>
diff --git a/src/views/purchaseManage/warehouse/DetailSupplier.vue b/src/views/purchaseManage/warehouse/DetailSupplier.vue
new file mode 100644
index 0000000..343aa87
--- /dev/null
+++ b/src/views/purchaseManage/warehouse/DetailSupplier.vue
@@ -0,0 +1,345 @@
+<template>
+ <div class="detail-view">
+ <el-drawer :visible.sync="detailConfig.visible" size="80%" :before-close="handleClose" :wrapperClosable="false">
+ <template slot="title">
+ <div class="header">
+ <span class="header-label">鍏ュ簱鍗曡鎯�</span>
+ <span class="header-title">{{ detailConfig.infomation.name }}</span>
+ </div>
+ </template>
+ <div class="content">
+ <div class="tab-view">
+ <el-tabs v-model="activeName">
+ <el-tab-pane label="璇︽儏" name="first"></el-tab-pane>
+
+ </el-tabs>
+ </div>
+ <div v-if="activeName === 'first'" class="detail">
+ <!-- 鍩烘湰淇℃伅 -->
+ <div class="basic-info">
+ <div class="basic-info-label" @click="expandClick('basic')">
+ <i v-if="isBasicExpand" class="el-icon-arrow-down"></i>
+ <i v-else class="el-icon-arrow-up"></i>
+ <span style="margin-left: 10px">鍩烘湰淇℃伅</span>
+ </div>
+ <div v-show="isBasicExpand" class="basic-info-content">
+ <ul>
+ <li v-for="(item, i) in basicInfoList" :key="i">
+ <div class="left">
+ <div class="content-title">{{ item.leftStr + "锛�" }}</div>
+ <div class="content-data">{{ item.leftValue ? item.leftValue : "--" }}</div>
+ </div>
+ <div v-if="item.rightStr && item.rightStr.length > 0" class="right">
+ <div class="content-title">{{ item.rightStr + "锛�" }}</div>
+ <div class="content-data">{{ item.rightValue ? item.rightValue : "--" }}</div>
+ </div>
+ </li>
+ </ul>
+ <div class="business_scope">
+ <div class="content-title">{{ "澶囨敞淇℃伅锛�" }}</div>
+ <div class="content-data">{{ record ? record : "--" }}</div>
+ </div>
+ </div>
+ </div>
+ <!-- 璐︽埛淇℃伅 -->
+ <div class="basic-info">
+ <div class="basic-info-label" @click="expandClick('dynamic')">
+ <i v-if="isDynamicExpand" class="el-icon-arrow-down"></i>
+ <i v-else class="el-icon-arrow-up"></i>
+ <span style="margin-left: 10px">浜у搧淇℃伅</span>
+ </div>
+ <div v-show="isDynamicExpand" class="basic-info-content">
+ <TableCommonView
+ style='margin-top:2px;'
+ class="content-table"
+ ref="tableListRef"
+ :table-list="tableList"
+ >
+ </TableCommonView>
+ </div>
+ </div>
+ </div>
+
+ </div>
+ </el-drawer>
+ </div>
+</template>
+
+<script>
+export default {
+ name: "DetailSupplier",
+ props: {
+ commonDetail: {
+ type: Object,
+ default: () => {
+ return {
+ visible: false,
+ infomation: {},
+ tableList:[],
+ }
+ }
+ }
+ },
+ components: {},
+ computed: {},
+ data() {
+ return {
+ detailConfig: this.commonDetail,
+ activeName: "first",
+ isBasicExpand: true, // 鍩烘湰淇℃伅灞曞紑
+ basicInfoList: [],
+ isDynamicExpand: true, // 浜у搧淇℃伅
+ tableList: [],
+ addConfig: {},
+ record: "", // 鏈�鏂拌繘灞�
+ noContactDays: 0,
+ newContactDays: ""
+ }
+ },
+ created() {
+ this.setData(this.detailConfig.infomation)
+ this.addConfig = {
+ id_name: "sales_leads_id",
+ id: this.detailConfig.infomation.id,
+ common_name: this.detailConfig.infomation.id,
+ sales_leads_name: this.detailConfig.infomation.name,
+ sales_leads_id: this.detailConfig.infomation.id
+ }
+ },
+ mounted() {},
+ methods: {
+ setData(item) {
+ if (item.FollowRecord && item.FollowRecord.length > 0) {
+ this.record = item.FollowRecord[0].record
+ console.log(item.FollowRecord[0].follow_time)
+ let follow_time = item.FollowRecord[0].follow_time
+ this.newContactDays = follow_time.substring(0, 10)
+ this.noContactDays = this.getDiffDay(Date.now(), this.newContactDays)
+ }
+ this.basicInfoList = [
+ {
+ leftStr: "閲囪喘鍏ュ簱鍗曠紪鍙�",
+ leftValue: item.number,
+ rightStr: "鍏ュ簱鍗曠姸鎬�",
+ rightValue: item.name
+ },
+ {
+ leftStr: "璐ㄦ鍗曠紪鍙�",
+ leftValue: item.contact_name,
+ rightStr: "渚涘簲鍟嗗悕绉�",
+ rightValue: item.contact_position
+ },
+ {
+ leftStr: "鍒拌揣浠撳簱",
+ leftValue: item.contact_phone,
+ rightStr: "閲囪喘璐熻矗浜�",
+ rightValue: "18513375588"
+ },
+ {
+ leftStr: "璐ㄦ鍛�",
+ leftValue: item.sales_resources,
+ rightStr: "浠撳簱鍛�",
+ rightValue: item.member_name
+ },
+ {
+ leftStr: "璐ㄦ鏃ユ湡",
+ leftValue: item.sales_resources,
+ rightStr: "鍏ュ簱瀹屾垚鏃堕棿",
+ rightValue: ""
+ },
+ {
+ leftStr: "鐗╂祦鍏徃",
+ leftValue: item.sales_resources,
+ rightStr: "鍒涘缓鏃堕棿",
+ rightValue: ""
+ },
+ {
+ leftStr: "鐗╂枡鍗曞彿",
+ leftValue: item.sales_resources,
+ rightStr: "",
+ rightValue: ""
+ }
+ ]
+ this.tableList = {
+ tableInfomation: [],
+ selectIndex: true,
+ tableColumn: [
+ { label: "浜у搧鍚嶇О", prop: "number", min: 190, isCommonClick: true },
+ { label: "浜у搧缂栫爜", prop: "name", min: 130, isCommonClick: true},
+ { label: "璁¢噺鍗曚綅", prop: "contact_name", min: 130 },
+ { label: "瑙勬牸鍨嬪彿", prop: "contact_phone", min: 130 },
+ { label: "渚涘簲鍟嗗彂璐ф暟閲�", prop: "sales_resources", min: 160 },
+ { label: "璐ㄦ鍚堟牸鏁伴噺", prop: "province", min: 180 },
+ { label: "鍏ュ簱鏁伴噺", prop: "city", min: 130 },
+ ]
+ }
+ },
+ handleClose() {
+ this.detailConfig.visible = false
+ },
+
+ // 灞曞紑鏀惰捣鐐瑰嚮浜嬩欢
+ expandClick(value) {
+ console.log(value)
+ if (value === "basic") {
+ this.isBasicExpand = !this.isBasicExpand
+ } else if (value === "dynamic") {
+ this.isDynamicExpand = !this.isDynamicExpand
+ }
+ },
+ // 璁$畻涓や釜鏃ユ湡涔嬮棿鐨勫樊鍊�
+ getDiffDay(date_1, date_2) {
+ let totalDays, diffDate
+ let myDate_1 = date_1
+ let myDate_2 = Date.parse(date_2)
+ // 灏嗕袱涓棩鏈熼兘杞崲涓烘绉掓牸寮忥紝鐒跺悗鍋氬樊
+ diffDate = Math.abs(myDate_1 - myDate_2) // 鍙栫浉宸绉掓暟鐨勭粷瀵瑰��
+
+ totalDays = Math.floor(diffDate / (1000 * 3600 * 24)) // 鍚戜笅鍙栨暣
+ // console.log(totalDays)
+
+ return totalDays // 鐩稿樊鐨勫ぉ鏁�
+ }
+ }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.detail-view {
+ .header {
+ height: 56px;
+ display: flex;
+ align-items: center;
+ padding-left: 10px;
+ .header-label {
+ padding: 5px;
+ border-radius: 4px;
+ background-color: #ff6600;
+ color: #fff;
+ font-size: 12px;
+ }
+ .header-title {
+ color: #323232;
+ font-size: 15px;
+ margin-left: 10px;
+ font-weight: inherit;
+ }
+ }
+ .content {
+ height:100%;
+ background-color: rgb(230, 233, 240);
+ padding: 8px;
+ .tab-view {
+ background: #fff;
+ // .tab-view-pane {
+ // position: relative;
+ .item {
+ position: absolute;
+ top: 0px;
+ right: 0px;
+ }
+ // }
+ }
+ .detail {
+ height:calc(100% - 40px);
+ background:#fff;
+ overflow:auto;
+ .basic-info {
+ .basic-info-label {
+ padding-left: 10px;
+ height: 42px;
+ line-height: 42px;
+ background: #f4f8fe;
+ color: #333;
+ font-size: 14px;
+ }
+ .basic-info-content {
+ background: #fff;
+ ul {
+ padding-inline-start: 0;
+ }
+ li {
+ display: flex;
+ font-size: 14px;
+ font-family: PingFangSC;
+ border-bottom: 1px solid #f9f9fb;
+ .left,
+ .right {
+ width: 50%;
+ display: flex;
+ align-items: center;
+ height: 40px;
+ .content-title {
+ width: 180px;
+ text-align: right;
+ color: #555;
+ }
+ .content-data {
+ text-align: left;
+ margin-left: 25px;
+ color: #333;
+ }
+ }
+ .remark {
+ width: 100%;
+ }
+ }
+ .business_scope {
+ display: flex;
+ align-items: center;
+ font-size: 14px;
+ min-height: 40px;
+ .content-title {
+ width: 180px;
+ text-align: right;
+ color: #555;
+ }
+ .content-data {
+ flex: 1;
+ padding: 5px;
+ text-align: left;
+ margin-left: 25px;
+ color: #333;
+ }
+ }
+ }
+ }
+ }
+ .second {
+ background: #fff;
+ .followup-records {
+ .table-view {
+ margin-top: 0 !important;
+ margin-bottom: 0;
+ }
+ }
+ }
+ }
+}
+::v-deep .el-drawer__body{
+ height:calc(100% - 60px)!important;
+ }
+::v-deep {
+ .el-drawer__header {
+ padding: 0;
+ margin-bottom: 0px;
+ }
+
+ .el-tabs--top .el-tabs__item.is-top:nth-child(2) {
+ padding-left: 20px;
+ }
+ .el-tabs__item.is-active {
+ color: $color-primary;
+ }
+ .el-tabs__item:hover {
+ color: $color-primary;
+ }
+ .el-tabs__active-bar {
+ background-color: $color-primary;
+ }
+ .el-tabs__header {
+ margin: 0;
+ }
+}
+</style>
diff --git a/src/views/purchaseManage/warehouse/index.vue b/src/views/purchaseManage/warehouse/index.vue
new file mode 100644
index 0000000..016f319
--- /dev/null
+++ b/src/views/purchaseManage/warehouse/index.vue
@@ -0,0 +1,210 @@
+<template>
+ <div class="rightContent">
+ <div class="content-box">
+ <div class="supplier-search">
+ <SearchCommonView
+ ref="searchCommonView"
+ :inputSelect="false"
+ placeholder="鍙緭鍏ュ叆搴撳崟鍙�,渚涘簲鍟嗗悕绉扮瓑鎼滅储"
+ @searchClick="searchClick"
+ @resetClick="resetClick"
+ />
+
+ </div>
+ <template>
+ <TableCommonView
+ class="content-table"
+ ref="tableListRef"
+ :table-list="tableList"
+ @selCommonClick="selCommonClick"
+ @getSelectArray="getSelectArray"
+ >
+ <!-- <template slot="tableButton">
+ <el-table-column label="鎿嶄綔" width="120">
+ <template slot-scope="scope">
+
+ </template>
+ </el-table-column>
+ </template> -->
+ </TableCommonView>
+ <div class="btn-pager">
+ <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" />
+ </div>
+ </template>
+ </div>
+
+ <!-- 鏂板缓/缂栬緫閿�鍞嚎绱� -->
+ <!-- <AddSalesLeadDialog v-if="editSalesLeadConfig.visible" :edit-rightContent-config="editSalesLeadConfig" /> -->
+ <!-- 璇︽儏 -->
+ <DetailSupplier v-if="commonDetail.visible" :common-detail="commonDetail" />
+ </div>
+</template>
+
+<script>
+import pageMixin from "@/components/makepager/pager/mixin/pageMixin"
+import { getSalesLeadsList, getDeleteSalesLeads } from "@/api/client/salesLead"
+import DetailSupplier from "@/views/purchaseManage/warehouse/DetailSupplier"
+
+export default {
+ name: "SupplierManage",
+ props: {},
+ components: { DetailSupplier },
+ mixins: [pageMixin],
+ computed: {},
+ data() {
+ return {
+ tableList: {}, // 鍒楄〃
+ selValueList: [],
+ commonDetail: {
+ visible: false,
+ infomation: {}
+ },
+ search_map: {}
+ }
+ },
+ created() {
+ this.setTable()
+ this.getData()
+ },
+ methods: {
+ setTable() {
+ this.tableList = {
+ tableInfomation: [],
+ selectIndex: true,
+ tableColumn: [
+ { label: "鍏ュ簱鍗曞彿", prop: "number", min: 190, isCommonClick: true },
+ { label: "閲囪喘缂栧彿", prop: "name", min: 130, isCommonClick: true},
+ { label: "鍗曟嵁绫诲瀷", prop: "contact_name", min: 130 },
+ { label: "渚涘簲鍟�", prop: "contact_phone", min: 130 },
+ { label: "鏀惰揣浠撳簱", prop: "sales_resources", min: 130 },
+ { label: "鍏ュ簱鏃堕棿", prop: "province", min: 180 },
+ { label: "缁忓姙浜�", prop: "city", min: 130 },
+ { label: "鍒跺崟浜�", prop: "member_name", min: 130 },
+ { label: "鐘舵��", prop: "member_name", min: 110 }
+ ]
+ }
+ },
+ // 璇锋眰鏁版嵁
+ async getData() {
+ await getSalesLeadsList({
+ search_map: this.search_map,
+ page: this.pagerOptions.currPage,
+ pageSize: this.pagerOptions.pageSize
+ })
+ .then((res) => {
+ const list = res.data.list.map((item) => {
+ return {
+ ...item,
+ province: item.Province.name,
+ city: item.City.name,
+ sales_resources: item.sales_sources.name,
+ member_name: item.member.username
+ }
+ })
+ this.tableList.tableInfomation = list || []
+ this.pagerOptions.totalCount = res.data.count
+ })
+ .catch((err) => {
+ console.log(err)
+ })
+ },
+ // 鎼滅储
+ searchClick(val, content) {
+ console.log(val, content)
+ this.search_map = {
+ [val.value]: content
+ }
+ this.getData()
+ },
+ resetClick() {
+ this.search_map = {}
+ this.getData()
+ },
+
+ // 鍒犻櫎
+ delClick() {
+ if (this.selValueList && this.selValueList.length > 0) {
+ this.$confirm("鏄惁纭鍒犻櫎?", "璀﹀憡", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning"
+ })
+ .then(() => {
+ console.log("dddd")
+ getDeleteSalesLeads({ ids: this.selValueList }).then((response) => {
+ if (response.code === 200) {
+ this.$message.success("鍒犻櫎鎴愬姛")
+ this.getData()
+ } else {
+ this.$message.warning("鍒犻櫎澶辫触")
+ }
+ })
+ })
+ .catch(() => {})
+ } else {
+ this.$message.warning("璇疯嚦灏戦�夋嫨涓�鏉¤褰�")
+ }
+ },
+ getSelectArray(val) {
+ this.selValueList = []
+ const list = val.map((item) => {
+ return item.id
+ })
+ this.selValueList = list
+ },
+ // 璇︽儏
+ selCommonClick(row) {
+ console.log(row)
+ this.commonDetail.visible = true
+ this.commonDetail.infomation = { ...row }
+ }
+ }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.rightContent {
+ width:100%;
+ height:calc(100% - 10px);
+ .content-box {
+ height:100%;
+ .supplier-search {
+ display: flex;
+ align-items: center;
+ .add-view {
+ margin-left: auto;
+ margin-right: 20px;
+ }
+ }
+ .content-table{
+ // height:calc(100% - 60px - 42px);
+ }
+ .btn-pager {
+ display: flex;
+ .page {
+ margin-left: auto;
+ }
+ }
+ }
+ .bottom {
+ .product-search {
+ display: flex;
+ align-items: center;
+ .search {
+ margin-left: auto;
+ }
+ .add-view {
+ margin-left: 20px;
+ margin-right: 20px;
+ }
+ }
+ .btn-pager {
+ display: flex;
+ .page {
+ margin-left: auto;
+ }
+ }
+ }
+}
+</style>
--
Gitblit v1.8.0