签章流程

This commit is contained in:
2023-11-17 13:50:18 +08:00
parent 1358e52fdb
commit 715859c63f
72 changed files with 8660 additions and 339 deletions
+197 -25
View File
@@ -1,7 +1,7 @@
<template>
<view>
<!-- <view class="product-title">{{title}}</view> -->
<vk-data-form ref="form1" v-model="form1.data" :action="form1.props.action" :columns="form1.props.columns"
<vk-data-form v-if="attributesLoaded" ref="form1" v-model="form1.data" :action="form1.props.action" :columns="form1.props.columns"
:rules="form1.props.rules" :form-type="form1.props.formType" :loading.sync="form1.props.loading"
:before-action="form1.props.beforeAction" :auto-close="true" label-width="140px" :footer-show="false"
@success="onFormSuccess">
@@ -33,6 +33,8 @@
data() {
return {
title: '商品',
attributesLoaded: false,
attributes: [],
// 表单相关开始-----------------------------------------------------------
form1: {
// 表单请求数据,此处可以设置默认值
@@ -58,26 +60,34 @@
},
props: {
list: "rows",
value: "_id",
value: "name",
label: "name"
},
watch: (res) => {
const {
option
} = res
this.form1.props.columns[2].columns = option.extraAttributes.map((item, index) => {
return {
key: index,
title: item.lable,
type: "select",
data: item.values.map(citem => {
return {
value: JSON.stringify({keyName: item.lable,keyValue: citem}),
label: citem
}
})
}
})
console.log(option);
if(option.extraAttributes) {
this.form1.props.columns[2].columns = option.extraAttributes.map((item, index) => {
return {
key: index,
title: item.label,
type: "select",
allowCreate: true,
filterable: true,
data: item.values.map(citem => {
return {
value: JSON.stringify({keyName: item.lable,keyValue: citem}),
label: citem
}
})
}
})
}else {
this.form1.props.columns[2].columns = []
}
}
@@ -93,15 +103,159 @@
],
},
{
key: "attributes",
title: "固定属性",
type: "object",
// justify: "start",
key: "",
title: "",
type: "group",
justify: "start",
showLabel: false,
columns: [
{
key: "brand",
title: "品牌厂家",
type: "select",
showAll: true,
allowCreate: true,
filterable: true,
data: () => {
const row = this.attributes.find(item => item.label == '品牌厂家')
if(row) {
return row.options
}
return [];
}
},
{
key: "materialQuality",
title: "材质",
type: "select",
showAll: true,
allowCreate: true,
filterable: true,
data: () => {
const row = this.attributes.find(item => item.label == '材质')
if(row) {
return row.options
}
return [];
}
},
],
},
{
key: "",
title: "",
type: "group",
justify: "start",
showLabel: false,
columns: [
{
key: "singleLength",
title: "单件长度",
type: "select",
showAll: true,
allowCreate: true,
filterable: true,
data: () => {
const row = this.attributes.find(item => item.label == '单件长度')
if(row) {
return row.options
}
return [];
}
},
{
key: "productStandard",
title: "产品标准",
type: "select",
showAll: true,
allowCreate: true,
filterable: true,
data: () => {
const row = this.attributes.find(item => item.label == '产品标准')
if(row) {
return row.options
}
return [];
}
},
],
},
{
key: "",
title: "",
type: "group",
justify: "start",
showLabel: false,
columns: [
{
key: "pricingForm",
title: "计价形式",
type: "select",
showAll: true,
allowCreate: true,
filterable: true,
data: () => {
const row = this.attributes.find(item => item.label == '计价形式')
if(row) {
return row.options
}
return [];
}
},
{
key: "processStandard",
title: "加工标准",
type: "select",
showAll: true,
allowCreate: true,
filterable: true,
data: () => {
const row = this.attributes.find(item => item.label == '加工标准')
if(row) {
return row.options
}
return [];
}
},
],
},
{
key: "",
title: "",
type: "group",
justify: "start",
showLabel: false,
columns: [
{
key: "deliveryService",
title: "交货服务",
type: "select",
showAll: true,
allowCreate: true,
filterable: true,
data: () => {
const row = this.attributes.find(item => item.label == '交货服务')
if(row) {
return row.options
}
return [];
}
},
{key: "deliveryTime", title: "交货时限", type: "date",},
]
},
{
key: "",title: "",type: 'group',showLabel: false, justify: "start",columns:
[
@@ -109,18 +263,24 @@
{
key: "procureUnit",
title: "单位",
type: "remote-select",
type: "select",
showAll: true,
action: "client/enquiry/attributes/pub/getOne",
actionData: {
label: '单位',
},
allowCreate: true,
filterable: true,
data: () => {
const row = this.attributes.find(item => item.label == '单位')
if(row) {
return row.options
}
return [];
}
},
]
},
{key: "deliveryTime", title: "交货时限", type: "date",},
{
key: "address",
title: "交货地点",
@@ -157,6 +317,18 @@
},
created() {
this.form1.props.columns[0].title = '商品' + (this.productIndex + 1)
vk.callFunction({
url: 'client/enquiry/attributes/pub/getList',
title: '请求中...',
data: {
},
success: (data) => {
this.attributes = data.rows
this.attributesLoaded = true
}
});
},
methods: {
+350
View File
@@ -0,0 +1,350 @@
<template>
<view>
<top-bar></top-bar>
<common-header></common-header>
<category-bar></category-bar>
<view class="page-nav">
<el-breadcrumb separator="/">
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
<el-breadcrumb-item>
<navigator style="display: inline-block;" url="/pages/enquiry/list">询价单</navigator>
</el-breadcrumb-item>
<el-breadcrumb-item>询价单详情</el-breadcrumb-item>
</el-breadcrumb>
</view>
<view class="page-main">
<el-descriptions class="description" title="采购商信息" :column="3" size="medium" direction="vertical" border>
<template slot="title">
采购商信息 (已有{{sheet.answerCount || 0}}家报价)
</template>
<template slot="extra">
<span style="padding-right: 20px;">距离报价结束还剩<span
style="color: red;">{{vk.pubfn.dateDiff2(sheet.answerTime)}}</span></span>
<el-button type="primary" size="small" @click="toQuote">我要报价</el-button>
</template>
<el-descriptions-item label="采购商">
<template v-if="sheet.user.accountType == 1">{{sheet.user.person.personName}}</template>
<template v-if="sheet.user.accountType == 2">{{sheet.user.company.companyName}}</template>
</el-descriptions-item>
<el-descriptions-item label="联系方式">
<template v-if="sheet.user.accountType == 1">{{sheet.user.person.mobile}}</template>
<template v-if="sheet.user.accountType == 2">{{sheet.user.company.companyName}}</template>
</el-descriptions-item>
<el-descriptions-item label="发布时间">
{{sheet._add_time_str}}
</el-descriptions-item>
</el-descriptions>
<!-- 产品列表 -->
<el-descriptions v-for="(item,index) in productList" class="description" :title="'采购商品' + (index + 1)"
:column="3" size="medium" border :key="index">
<el-descriptions-item label="商品">
{{item.name}}
</el-descriptions-item>
<el-descriptions-item v-for="(attr, aindex) in item.extraAttributes" :label="attr.keyName"
:key="aindex">
{{attr.keyValue}}
</el-descriptions-item>
<el-descriptions-item label="品牌厂家">
{{item.brand}}
</el-descriptions-item>
<el-descriptions-item label="材质">
{{item.materialQuality}}
</el-descriptions-item>
<el-descriptions-item label="单件长度">
{{item.singleLength}}
</el-descriptions-item>
<el-descriptions-item label="产品标准">
{{item.productStandard}}
</el-descriptions-item>
<el-descriptions-item label="计价形式">
{{item.pricingForm}}
</el-descriptions-item>
<el-descriptions-item label="加工标准">
{{item.processStandard}}
</el-descriptions-item>
<el-descriptions-item label="交货服务">
{{item.deliveryService}}
</el-descriptions-item>
<el-descriptions-item label="交货时限">
{{item.deliveryTime}}
</el-descriptions-item>
<el-descriptions-item label="采购数量">
{{item.procureNumber}}{{item.procureUnit}}
</el-descriptions-item>
<el-descriptions-item label="交货地点">
<template
v-if="item.address && item.address.region">{{item.address.region.province.name + "-" + item.address.region.city.name + "-" + item.address.region.area.name}}</template>
</el-descriptions-item>
</el-descriptions>
<el-descriptions class="description" title="采购商其他要求" :column="3" size="medium" direction="vertical" border>
<el-descriptions-item label="其他要求">
{{sheet.remark || '无'}}
</el-descriptions-item>
</el-descriptions>
<el-descriptions class="description" title="发票要求" :column="3" size="medium" border direction="vertical">
<el-descriptions-item label="是否含税">
{{sheet.invoice? '含税': '不含税'}}
</el-descriptions-item>
<el-descriptions-item v-if="sheet.invoice" label="发票种类">
{{sheet.nvoiceType}}
</el-descriptions-item>
<el-descriptions-item v-if="sheet.invoice" label="开票时间">
{{sheet.writeInvoiceTime}}
</el-descriptions-item>
</el-descriptions>
<el-descriptions class="description" title="运输要求" :column="3" size="medium" border direction="vertical">
<el-descriptions-item label="随货资料">
{{sheet.transportDocuments.join("、")}}
</el-descriptions-item>
<el-descriptions-item label="其他资料">
{{sheet.otherTransportDocuments}}
</el-descriptions-item>
<el-descriptions-item label="运输限制">
{{sheet.transportLimit}}
</el-descriptions-item>
</el-descriptions>
<el-descriptions class="description" title="交易模式" :column="3" size="medium" border>
<el-descriptions-item label="交易模式">
<template v-if="sheet.tradeMethod == 1">自主交易</template>
<template v-else-if="sheet.tradeMethod == 0">金久信公正</template>
</el-descriptions-item>
<el-descriptions-item label="付款方式">
<template v-if="sheet.payMethod == 1">预付{{sheet.advancePayRate}}%货到付全款</template>
<template v-else-if="sheet.payMethod == 2">货到验收后付款</template>
<template v-else-if="sheet.payMethod == 3">提货付全款</template>
<template v-else-if="sheet.payMethod == 4">信誉采购</template>
<template v-else-if="sheet.payMethod == 5">{{item.otherPayMethod}}</template>
</el-descriptions-item>
<el-descriptions-item label="报价时限">
{{vk.pubfn.timeFormat(sheet.answerTime,"yyyy-MM-dd hh:mm:ss")}}
</el-descriptions-item>
<el-descriptions-item label="保证金要求">
{{sheet.earnestMoney}}
</el-descriptions-item>
</el-descriptions>
<!-- 报价列表 -->
<vk-data-table :data="sheet.quoteList" :columns="table1.columns" title="adasda "
:customRightBtns="table1.customRightBtns"></vk-data-table>
</view>
</view>
</template>
<script>
export default {
data() {
return {
enquiryId: undefined,
productList: [],
sheetTitle: '',
sheet: {
user: {},
productList: [],
transportDocuments: []
},
table1: {
// 表格数据
data: [],
// 表格字段显示规则
columns: [{
key: "subjectName",
title: "供应商",
type: "text",
width: 300,
formatter: (val, row, column, index) => {
if (vk.getVuex('$user.userInfo._id') == this.sheet.userId) {
return val
}
if (row.accountType == 1) {
return vk.pubfn.hidden(val, 1, 1);
} else {
return vk.pubfn.hidden(val, 2, 4);
}
}
},
{
key: "_add_time_str",
title: "报价时间",
type: "text",
width: 200
},
{
key: "subjectMobile",
title: "联系方式",
type: "text",
width: 120,
formatter: (val, row, column, index) => {
let str = val
if (row.managerMobile) {
str = row.managerMobile
}
if (vk.getVuex('$user.userInfo._id') == this.sheet.userId) {
return str
}
return vk.pubfn.hidden(str, 3, 4);
}
},
{
key: "totalPrice",
title: "报价",
type: "textarea",
width: 130,
formatter: (val, row, column, index) => {
let str = val
if (row.managerMobile) {
str = row.managerMobile
}
if (vk.getVuex('$user.userInfo._id') == this.sheet.userId) {
return val
}
return "******";
}
},
],
customRightBtns: [
{
title: '合同',
type: 'primary',
icon: 'el-icon-search',
show: (row) => {
return vk.getVuex('$user.userInfo._id') == this.sheet.userId && row.status == 1
},
onClick: (item) => {
vk.navigateTo('/pages/contract/index');
},
},
{
title: '选择',
type: 'primary',
icon: 'el-icon-search',
show: (row) => {
return vk.getVuex('$user.userInfo._id') == this.sheet.userId && row.status == 0
},
onClick: (item) => {
vk.callFunction({
url: 'client/enquiry/quote/kh/confirmQuote',
title: '请求中...',
data: {
quoteId: item._id
},
success: (data) => {
vk.navigateTo('/pages/contract/index');
}
});
},
},
{
title: '查看报价详情',
type: 'primary',
icon: 'el-icon-search',
disabled: (item) => {
return vk.getVuex('$user.userInfo._id') != this.sheet.userId
},
onClick: (item) => {
vk.toast(`${item._id}-按钮1`);
}
},
]
},
};
},
onLoad(options = {}) {
const {
id
} = options
if (!id) {
vk.navigateTo('/pages/enquiry/list');
return
}
this.enquiryId = id
this.getEnquiryDetail()
},
methods: {
/**
* 打开报价窗口
*/
toQuote() {
// 获取用户信息
vk.userCenter.getCurrentUserInfo({
success: (data) => {
const {
userInfo
} = data
if (userInfo.quoteTimes > 3) {
}
this.$confirm(`今日报价次数${userInfo.quoteTimes || 0}, 是否继续?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
center: true
}).then(res => {
vk.navigateTo('/pages/enquiry/quote?enquiryId=' + this.enquiryId);
})
}
});
},
/**
* 获取询价单详情
*/
getEnquiryDetail() {
vk.callFunction({
url: 'client/enquiry/sheet/pub/getDetail',
title: '请求中...',
data: {
_id: this.enquiryId
},
success: (res) => {
const {
productList
} = res.data
productList.forEach(item => {
const keys = Object.keys(item.extraAttributes)
keys.forEach(citem => {
item.extraAttributes[citem] = JSON.parse(item.extraAttributes[
citem])
})
})
this.productList = productList
delete res.data.productList
this.sheet = res.data
}
});
}
}
}
</script>
<style lang="scss" scoped>
.page-main {
width: 1200px;
margin: 20px auto;
background-color: #FFFFFF;
padding: 20px;
}
.description {
margin-bottom: 40px;
}
</style>
+114 -99
View File
@@ -22,61 +22,19 @@
<view class="goods-options">
<el-row class="">
<el-button @click="toRelease" type="primary" round>发布询价单</el-button>
<el-button type="primary" round plain>我发布的询价单</el-button>
<el-button @click="toMyEnquiry" type="primary" round plain>我发布的询价单</el-button>
</el-row>
</view>
</view>
<!-- 筛选表单 -->
<view class="filter-outer">
<el-form @submit.native.prevent label-width="80px">
<el-form-item label="关键词">
<el-input @keyup.enter.native="search" clearable placeholder="输入关键字搜索" v-model="keyword">
<el-button @click="search(1)" type="primary" slot="append" icon="el-icon-search"></el-button>
</el-input>
</el-form-item>
<el-form-item label="分类">
<el-tabs>
<el-tab-pane v-for="(item, index) in categoryTreeData" :label="item.name" :key="item._id">
<el-checkbox-group v-model="checkCategoryList[index]">
<el-checkbox v-for="(citem, cindex) in item.children" :label="citem"
:key="cindex">{{citem.name}}</el-checkbox>
</el-checkbox-group>
</el-tab-pane>
</el-tabs>
</el-form-item>
<el-form-item label="城市">
<el-checkbox-group v-model="checkProvinceList">
<!-- <el-checkbox :label="{code:0,name: '全国'}">全国</el-checkbox> -->
<el-checkbox :checked="cindex == 0" v-for="(citem, cindex) in provinceData" :label="citem"
:key="cindex">{{citem.name}}</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item label="已选">
<view class="tags">
<el-tag v-for="(item, index) in checkCategoryArr" :key="index">{{item.name}}</el-tag>
</view>
</el-form-item>
</el-form>
</view>
<!-- 商品列表 -->
<view class="goods-list">
</view>
<view class="paginatio">
<el-pagination
@current-change="search"
background
layout="prev, pager, next"
:total="goodsData.total">
</el-pagination>
<view class="sheet-list">
<vk-data-table ref="table1" :action="table1.action" :columns="table1.columns" :customRightBtns="table1.customRightBtns"
:pagination="true"></vk-data-table>
</view>
</view>
</template>
@@ -89,37 +47,101 @@
export default {
data() {
return {
categoryTreeData: [],
provinceData: provinces,
checkCategoryList: [],
checkProvinceList: [],
keyword: '',
goodsData: {
total: 0,
rows: []
}
// 表格相关开始 -----------------------------------------------------------
table1: {
// 表格数据请求地址
action: "client/enquiry/sheet/pub/getList",
customRightBtns: [{
title: '详情',
icon: 'el-icon-search',
type: 'primary',
onClick: (item) => {
vk.navigateTo('/pages/enquiry/detail?id=' + item._id);
}
}, ],
// 表格字段显示规则
columns: [
{
key: "productList",
title: "品名/材质",
type: "text",
width: 280,
formatter: (val, row, column, index) => {
return val.map(item=>item.name).join("/")
}
},
{
key: "productList",
title: "采购量",
type: "text",
width: 280,
formatter: (val, row, column, index) => {
return val.map(item=>item.procureNumber + item.procureUnit).join("/")
}
},
{
key: "productList",
title: "收货地",
type: "text",
minWidth: 200,
formatter: (val, row, column, index) => {
let str = ""
try {
str = val.map(item=>{
const addressStr = item.address.region.province.name + "-" + item.address.region.city.name + "-" + item.address.region.area.name
return addressStr
}).join("/")
} catch(err){
str = ""
}
return str
}
},
{
key: "user",
title: "采购单位",
type: "text",
width: 280,
formatter: (val, row, column, index) => {
if(val.accountType == 1) {
return val.person.personName
}else {
return val.company.companyName
}
}
},
// {
// key: "_add_time",
// title: "添加时间",
// type: "time",
// width: 160
// },
],
// 多选框选中的值
multipleSelection: [],
// 当前高亮的记录
selectItem: "",
},
// 表格相关结束 -----------------------------------------------------------
};
},
onLoad() {
this.search(1)
vk.callFunction({
url: 'client/spot/category/pub/getTree',
title: '请求中...',
data: {
// this.search(1)
},
success: (data) => {
this.categoryTreeData = data.rows
for (var i = 0; i < data.rows.length; i++) {
this.checkCategoryList.push([])
}
}
});
},
methods: {
toMyEnquiry() {
vk.navigateTo({
url: '/pages/enquiry/my'
})
},
toRelease() {
if (!vk.getVuex('$user.userInfo.fadadaConfirm')) {
this.$confirm('您尚未认证, 是否前往认证?', '提示', {
confirmButtonText: '确定',
@@ -128,7 +150,7 @@
}).then(() => {
this.getCertUrl()
})
}else if(vk.pubfn.isNull(vk.getVuex('$user.userInfo.businessCard'))) {
} else if (vk.pubfn.isNull(vk.getVuex('$user.userInfo.businessCard'))) {
this.$confirm('请完善名片信息', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
@@ -136,15 +158,15 @@
}).then(() => {
vk.navigateTo('/pages/user/user?menu=business-card');
})
}else {
uni.navigateTo({
} else {
vk.navigateTo({
url: '/pages/enquiry/release'
})
}
},
search(pageIndex) {
const categoryIds = []
@@ -161,24 +183,15 @@
}
vk.callFunction({
url: 'client/spot/goods/pub/getList',
url: 'client/enquiry/sheet/pub/getList',
data: {
pageIndex: pageIndex,
pageSize: 20,
keyword: this.keyword,
categoryIds: categoryIds,
provinceCodes: provinceCodes
},
success: (data) => {
console.log('data: ',data);
data.rows.forEach(item => {
try {
item.addressStr = item.address.province.name + "-" + item.address.city.name + "-" + item.address.area.name
} catch(err){
item.addressStr = ""
}
})
console.log('data: ', data);
this.goodsData = data
}
});
@@ -187,6 +200,7 @@
computed: {
checkCategoryArr() {
let arr = []
this.checkCategoryList.forEach(item => {
arr.push(...item)
})
@@ -196,6 +210,7 @@
...item
})
})
return arr
}
@@ -233,22 +248,22 @@
margin-right: 10px;
}
}
.goods-list {
.sheet-list {
width: 1200px;
margin: 20px auto;
display: flex;
// display: flex;
}
.paginatio{
.paginatio {
float: none;
width: 1200px;
margin: 20px auto;
display: flex;
justify-content: center;
}
</style>
</style>
+241
View File
@@ -0,0 +1,241 @@
<template>
<view>
<top-bar></top-bar>
<common-header></common-header>
<category-bar></category-bar>
<!-- <view class="page-nav">
<el-breadcrumb separator="/">
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
<el-breadcrumb-item><navigator url="/pages/spot/goods/goods">现货市场</navigator></el-breadcrumb-item>
</el-breadcrumb>
</view> -->
<view class="carousel">
<el-carousel height="170px">
<el-carousel-item v-for="item in 4" :key="item">
<image class="carousel-img"
src="http://jyx.gxwebsoft.com/uploads/20210506/600fc93e6b85324b3ea1373ee264290d.jpg"
mode="aspectFill"></image>
</el-carousel-item>
</el-carousel>
<view class="goods-options">
<el-row class="">
<el-button @click="toRelease" type="primary" round>发布询价单</el-button>
<!-- <el-button type="primary" round plain>我发布的询价单</el-button> -->
</el-row>
</view>
</view>
<!-- 商品列表 -->
<view class="sheet-list">
<vk-data-table ref="table1" :action="table1.action" :columns="table1.columns" :customRightBtns="table1.customRightBtns"
:pagination="true" :query-form-param="queryForm1"></vk-data-table>
</view>
</view>
</template>
<script>
import provinces from "@/uni_modules/vk-uview-ui/libs/address/provinces.json";
provinces.unshift({
code: 9999,
name: '全国'
})
export default {
data() {
return {
keyword: '',
// 表格相关开始 -----------------------------------------------------------
queryForm1: {
formData: {
userId: vk.getVuex('$user.userInfo._id')
},
columns: [
{ key:"userId", title:"发布人ID", type:"text", width:160, mode:"=" },
]
},
table1: {
// 表格数据请求地址
action: "client/enquiry/sheet/pub/getList",
customRightBtns: [{
title: '详情',
icon: 'el-icon-search',
type: 'primary',
onClick: (item) => {
vk.navigateTo('/pages/enquiry/detail?id=' + item._id);
}
}, ],
// 表格字段显示规则
columns: [
{
key: "productList",
title: "品名/材质",
type: "text",
width: 280,
formatter: (val, row, column, index) => {
return val.map(item=>item.name).join("/")
}
},
{
key: "productList",
title: "采购量",
type: "text",
width: 280,
formatter: (val, row, column, index) => {
return val.map(item=>item.procureNumber + item.procureUnit).join("/")
}
},
{
key: "productList",
title: "收货地",
type: "text",
minWidth: 200,
formatter: (val, row, column, index) => {
let str = ""
try {
str = val.map(item=>{
const addressStr = item.address.region.province.name + "-" + item.address.region.city.name + "-" + item.address.region.area.name
return addressStr
}).join("/")
} catch(err){
str = ""
}
return str
}
},
{
key: "user",
title: "采购单位",
type: "text",
width: 280,
formatter: (val, row, column, index) => {
if(val.accountType == 1) {
return val.person.personName
}else {
return val.company.companyName
}
}
},
// {
// key: "_add_time",
// title: "添加时间",
// type: "time",
// width: 160
// },
],
// 多选框选中的值
multipleSelection: [],
// 当前高亮的记录
selectItem: "",
},
// 表格相关结束 -----------------------------------------------------------
};
},
onLoad() {
},
methods: {
toRelease() {
if (!vk.getVuex('$user.userInfo.fadadaConfirm')) {
this.$confirm('您尚未认证, 是否前往认证?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.getCertUrl()
})
} else if (vk.pubfn.isNull(vk.getVuex('$user.userInfo.businessCard'))) {
this.$confirm('请完善名片信息', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
vk.navigateTo('/pages/user/user?menu=business-card');
})
} else {
uni.navigateTo({
url: '/pages/enquiry/release'
})
}
},
},
computed: {
checkCategoryArr() {
let arr = []
this.checkCategoryList.forEach(item => {
arr.push(...item)
})
this.checkProvinceList.forEach(item => {
arr.push({
...item
})
})
return arr
}
}
}
</script>
<style lang="scss" scoped>
.carousel {
width: 1200px;
margin: 20px auto;
}
.carousel-img {
width: 100%;
height: 100%;
}
.goods-options {
background-color: #FFFFFF;
padding: 20px;
}
.filter-outer {
width: 1200px;
margin: 20px auto;
background-color: #FFFFFF;
padding: 20px;
}
.tags {
display: flex;
.el-tag {
margin-right: 10px;
}
}
.sheet-list {
width: 1200px;
margin: 20px auto;
// display: flex;
}
.paginatio {
float: none;
width: 1200px;
margin: 20px auto;
display: flex;
justify-content: center;
}
</style>
+228
View File
@@ -0,0 +1,228 @@
<template>
<view>
<top-bar></top-bar>
<common-header></common-header>
<category-bar></category-bar>
<view class="page-nav">
<el-breadcrumb separator="/">
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
<el-breadcrumb-item>
<navigator style="display: inline-block;" url="/pages/enquiry/list">询价单</navigator>
</el-breadcrumb-item>
<el-breadcrumb-item>填写报价信息</el-breadcrumb-item>
</el-breadcrumb>
</view>
<view class="page-main">
<!-- 产品列表 -->
<view class="quote" v-for="(item,index) in sheet.productList" :key="index">
<el-descriptions class="description" :title="'采购商品' + (index + 1)" :column="3"
size="medium" border >
<el-descriptions-item label="商品">
{{item.name}}
</el-descriptions-item>
<el-descriptions-item v-for="(attr, aindex) in item.extraAttributes" :label="attr.keyName"
:key="aindex">
{{attr.keyValue}}
</el-descriptions-item>
<el-descriptions-item label="品牌厂家">
{{item.brand}}
</el-descriptions-item>
<el-descriptions-item label="材质">
{{item.materialQuality}}
</el-descriptions-item>
<el-descriptions-item label="单件长度">
{{item.singleLength}}
</el-descriptions-item>
<el-descriptions-item label="产品标准">
{{item.productStandard}}
</el-descriptions-item>
<el-descriptions-item label="计价形式">
{{item.pricingForm}}
</el-descriptions-item>
<el-descriptions-item label="加工标准">
{{item.processStandard}}
</el-descriptions-item>
<el-descriptions-item label="交货服务">
{{item.deliveryService}}
</el-descriptions-item>
<el-descriptions-item label="交货时限">
{{item.deliveryTime}}
</el-descriptions-item>
<el-descriptions-item label="采购数量">
{{item.procureNumber}}{{item.procureUnit}}
</el-descriptions-item>
<el-descriptions-item label="交货地点">
{{item.address.region.province.name + "-" + item.address.region.city.name + "-" + item.address.region.area.name}}
</el-descriptions-item>
</el-descriptions>
<view class="quote-form">
<el-form label-width="80px">
<el-form-item label="报价单价">
<vk-data-input-money v-model="item.unitPrice" placeholder="请输入单价" rightText="元"></vk-data-input-money>
</el-form-item>
<el-form-item label="小计金额">
<vk-data-input-money :readonly="true" :value="item.unitPrice * item.procureNumber" placeholder="" rightText="元"></vk-data-input-money>
</el-form-item>
</el-form>
</view>
</view>
<el-form label-width="120px" :inline="true">
<el-form-item label="报价总价">
<vk-data-input-money :readonly="true" :value="totalPrice" placeholder="请输入单价" rightText="元"></vk-data-input-money>
</el-form-item>
<el-form-item label="人民币大写">
<el-input :readonly="true" :value="totalPriceStr" placeholder="请输入内容"></el-input>
</el-form-item>
</el-form>
<view class="form-footer">
<el-button type="primary" @click="submit">提交报价单</el-button>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
enquiryId: undefined,
// productList: [],
sheetTitle: '',
sheet: {
productList: []
},
// totalPriceStr: ''
};
},
onLoad(options = {}) {
const {
enquiryId
} = options
if (!enquiryId) {
vk.navigateTo('/pages/enquiry/list');
return
}
this.enquiryId = enquiryId
this.getEnquiryDetail()
},
computed: {
totalPrice() {
let price = 0
this.sheet.productList.forEach(item => {
price += item.unitPrice * item.procureNumber
})
return price
},
totalPriceStr() {
if(this.totalPrice == 0) {
return "零元"
}
return vk.myfn.convertCurrency(this.totalPrice / 100)
}
},
methods: {
// 提交报价单
async submit() {
const data = await vk.userCenter.getCurrentUserInfo();
const {userInfo} = data
if(userInfo.quoteTimes > 3) {
}
this.$confirm(`今日报价次数${userInfo.quoteTimes || 0}, 是否继续?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
center: true
}).then(res => {
vk.callFunction({
url: 'client/enquiry/quote/kh/addQuote',
title: '请求中...',
data: {
sheet: this.sheet,
totalPrice: this.totalPrice
},
success: (data) => {
this.$message({
message: "报价成功",
type: 'success'
})
}
});
})
},
/**
* 获取询价单详情
*/
getEnquiryDetail() {
vk.callFunction({
url: 'client/enquiry/sheet/pub/getDetail',
title: '请求中...',
data: {
_id: this.enquiryId
},
success: (res) => {
res.data.productList.forEach(item => {
item.unitPrice = 0
const keys = Object.keys(item.extraAttributes)
keys.forEach(citem => {
item.extraAttributes[citem] = JSON.parse(item.extraAttributes[
citem])
})
})
this.sheet = res.data
}
});
}
}
}
</script>
<style lang="scss" scoped>
.page-main {
width: 1200px;
margin: 20px auto;
background-color: #FFFFFF;
padding: 20px;
}
.description {
margin-bottom: 40px;
width: 800px;
}
.quote{
display: flex;
align-items: center;
justify-content: space-between;
}
.quote-form {
width: 260px;
}
.form-footer {
height: 40px;
line-height: 40px;
background: #fff;
padding-top: 0;
text-align: center;
display: block;
}
</style>
+24 -5
View File
@@ -30,9 +30,13 @@
<vk-data-form ref="form1" v-model="form1.data" :action="form1.props.action" :columns="form1.props.columns"
:rules="form1.props.rules" :form-type="form1.props.formType" :loading.sync="form1.props.loading"
:before-action="form1.props.beforeAction" label-width="140px" cancel-text="保存草稿" submit-text="提交询价单"
@success="onFormSuccess">
@success="onFormSuccess" :footer-show="false">
</vk-data-form>
<view class="form-footer">
<el-button type="" >保存草稿</el-button>
<el-button type="primary" @click="submit">提交询价单</el-button>
</view>
<!-- <el-divider content-position="left">其他设置</el-divider> -->
</view>
@@ -110,16 +114,16 @@
title: "运输限制",
type: "text",
},
{key: "", title: "交易模式", type: "bar-title", component: 'custom-form-section'},
{key: "", title: "交易说明", type: "bar-title", component: 'custom-form-section'},
{key: "tradeMethod",
title: "交易模式",
type: "radio",
data: [
{ value: '自主交易', label: "自主交易" },
{ value: '金久信公证', label: "金久信公证" },
{ value: 1, label: "自主交易" },
{ value: 0, label: "金久信公证" },
],
},
{key: "", title: "交易说明", type: "bar-title"},
// {key: "", title: "交易说明", type: "bar-title"},
{
key: "payMethod",
title: "付款方式",
@@ -199,6 +203,13 @@
},
addProduct() {
this.productList.push({})
},
onFormSuccess() {
vk.navigateTo('/pages/enquiry/list');
},
submit() {
this.$refs.form1.submitForm()
}
}
@@ -231,4 +242,12 @@
padding-left: 140px;
margin: 0 0 20px 0;
}
.form-footer {
height: 40px;
line-height: 40px;
background: #fff;
padding-top: 0;
text-align: center;
display: block;
}
</style>