|
@@ -22,12 +22,7 @@
|
|
|
<u-form :model="addForm" :rules="rules" ref="addForm" label-width="0">
|
|
<u-form :model="addForm" :rules="rules" ref="addForm" label-width="0">
|
|
|
<u-form-item prop="content" customStyle="padding:40rpx 0 34rpx">
|
|
<u-form-item prop="content" customStyle="padding:40rpx 0 34rpx">
|
|
|
<view class="form-label flex_l">跟进内容</view>
|
|
<view class="form-label flex_l">跟进内容</view>
|
|
|
- <u-textarea
|
|
|
|
|
- v-model="addForm.content"
|
|
|
|
|
- placeholder="请输入跟进内容"
|
|
|
|
|
- maxlength="800"
|
|
|
|
|
- height="190rpx"
|
|
|
|
|
- count
|
|
|
|
|
|
|
+ <u-textarea v-model="addForm.content" placeholder="请输入跟进内容" maxlength="800" height="190rpx" count
|
|
|
customStyle="border-radius:16rpx"></u-textarea>
|
|
customStyle="border-radius:16rpx"></u-textarea>
|
|
|
</u-form-item>
|
|
</u-form-item>
|
|
|
<u-form-item prop="date" borderBottom customStyle="padding:40rpx 0 30rpx" @click="showDate = true">
|
|
<u-form-item prop="date" borderBottom customStyle="padding:40rpx 0 30rpx" @click="showDate = true">
|
|
@@ -35,59 +30,31 @@
|
|
|
<view class="label-tag"></view>
|
|
<view class="label-tag"></view>
|
|
|
跟进时间
|
|
跟进时间
|
|
|
</view>
|
|
</view>
|
|
|
- <u-input
|
|
|
|
|
- :readonly="true"
|
|
|
|
|
- placeholder="请选择跟进时间"
|
|
|
|
|
- v-model="addForm.date"
|
|
|
|
|
- border="none"
|
|
|
|
|
- suffixIcon="arrow-down"
|
|
|
|
|
- suffixIconStyle="color:#CDCDCD"
|
|
|
|
|
- clearable
|
|
|
|
|
- customStyle="padding: 0 30rpx 0 12rpx"></u-input>
|
|
|
|
|
|
|
+ <u-input :readonly="true" placeholder="请选择跟进时间" v-model="addForm.date" border="none" suffixIcon="arrow-down"
|
|
|
|
|
+ suffixIconStyle="color:#CDCDCD" clearable customStyle="padding: 0 30rpx 0 12rpx"></u-input>
|
|
|
</u-form-item>
|
|
</u-form-item>
|
|
|
<u-form-item prop="mode" borderBottom customStyle="padding:40rpx 0 30rpx" @click="showMode = true">
|
|
<u-form-item prop="mode" borderBottom customStyle="padding:40rpx 0 30rpx" @click="showMode = true">
|
|
|
<view class="form-label flex_l">
|
|
<view class="form-label flex_l">
|
|
|
<view class="label-tag"></view>
|
|
<view class="label-tag"></view>
|
|
|
跟进方式
|
|
跟进方式
|
|
|
</view>
|
|
</view>
|
|
|
- <u-input
|
|
|
|
|
- :readonly="true"
|
|
|
|
|
- placeholder="请选择跟进方式"
|
|
|
|
|
- v-model="addForm.mode"
|
|
|
|
|
- border="none"
|
|
|
|
|
- suffixIcon="arrow-down"
|
|
|
|
|
- suffixIconStyle="color:#CDCDCD"
|
|
|
|
|
- clearable
|
|
|
|
|
- customStyle="padding: 0 30rpx 0 12rpx"></u-input>
|
|
|
|
|
|
|
+ <u-input :readonly="true" placeholder="请选择跟进方式" v-model="addForm.mode" border="none" suffixIcon="arrow-down"
|
|
|
|
|
+ suffixIconStyle="color:#CDCDCD" clearable customStyle="padding: 0 30rpx 0 12rpx"></u-input>
|
|
|
</u-form-item>
|
|
</u-form-item>
|
|
|
<u-form-item prop="contactsName" borderBottom customStyle="padding:40rpx 0 30rpx" @click="open">
|
|
<u-form-item prop="contactsName" borderBottom customStyle="padding:40rpx 0 30rpx" @click="open">
|
|
|
<view class="form-label flex_l">
|
|
<view class="form-label flex_l">
|
|
|
<view class="label-tag"></view>
|
|
<view class="label-tag"></view>
|
|
|
联系人
|
|
联系人
|
|
|
</view>
|
|
</view>
|
|
|
- <u-input
|
|
|
|
|
- :readonly="true"
|
|
|
|
|
- placeholder="请选择客户联系人"
|
|
|
|
|
- v-model="addForm.contactsName"
|
|
|
|
|
- border="none"
|
|
|
|
|
- suffixIcon="arrow-down"
|
|
|
|
|
- suffixIconStyle="color:#CDCDCD"
|
|
|
|
|
- clearable
|
|
|
|
|
- customStyle="padding: 0 30rpx 0 12rpx"></u-input>
|
|
|
|
|
|
|
+ <u-input :readonly="true" placeholder="请选择客户联系人" v-model="addForm.contactsName" border="none"
|
|
|
|
|
+ suffixIcon="arrow-down" suffixIconStyle="color:#CDCDCD" clearable customStyle="padding: 0 30rpx 0 12rpx">
|
|
|
|
|
+ </u-input>
|
|
|
</u-form-item>
|
|
</u-form-item>
|
|
|
</u-form>
|
|
</u-form>
|
|
|
<view class="upload-file-box">
|
|
<view class="upload-file-box">
|
|
|
<view class="form-label flex_l">附件</view>
|
|
<view class="form-label flex_l">附件</view>
|
|
|
- <uni-file-picker
|
|
|
|
|
- file-mediatype="all"
|
|
|
|
|
- v-model="imageValue"
|
|
|
|
|
- mode="grid"
|
|
|
|
|
- @select="select"
|
|
|
|
|
- @progress="progress"
|
|
|
|
|
- @success="success"
|
|
|
|
|
- @fail="fail"
|
|
|
|
|
- ref="upload"
|
|
|
|
|
- limit="1">
|
|
|
|
|
|
|
+ <uni-file-picker file-mediatype="all" v-model="imageValue" mode="grid" @select="select" @progress="progress"
|
|
|
|
|
+ @success="success" @fail="fail" ref="upload" limit="1">
|
|
|
<view class="upload-btn">
|
|
<view class="upload-btn">
|
|
|
<u-icon name="plus-circle-fill" color="blue" size="28"></u-icon>
|
|
<u-icon name="plus-circle-fill" color="blue" size="28"></u-icon>
|
|
|
</view>
|
|
</view>
|
|
@@ -95,20 +62,11 @@
|
|
|
</view>
|
|
</view>
|
|
|
<view class="save" @click="handleAdd">保存</view>
|
|
<view class="save" @click="handleAdd">保存</view>
|
|
|
<!-- 选择跟进方式 -->
|
|
<!-- 选择跟进方式 -->
|
|
|
- <u-picker
|
|
|
|
|
- :show="showMode"
|
|
|
|
|
- :columns="modeColumns"
|
|
|
|
|
- keyName="label"
|
|
|
|
|
- @cancel="showMode = false"
|
|
|
|
|
- @confirm="pickMode"></u-picker>
|
|
|
|
|
|
|
+ <u-picker :show="showMode" :columns="modeColumns" keyName="label" @cancel="showMode = false" @confirm="pickMode">
|
|
|
|
|
+ </u-picker>
|
|
|
<!-- 选择下次时间 -->
|
|
<!-- 选择下次时间 -->
|
|
|
- <u-datetime-picker
|
|
|
|
|
- v-if="showDate"
|
|
|
|
|
- :show="showDate"
|
|
|
|
|
- mode="datetime"
|
|
|
|
|
- v-model="addForm.date"
|
|
|
|
|
- @cancel="showDate = false"
|
|
|
|
|
- @confirm="pickDate"></u-datetime-picker>
|
|
|
|
|
|
|
+ <u-datetime-picker v-if="showDate" :show="showDate" mode="datetime" v-model="addForm.date"
|
|
|
|
|
+ @cancel="showDate = false" @confirm="pickDate"></u-datetime-picker>
|
|
|
</view>
|
|
</view>
|
|
|
<u-notify ref="uNotify"></u-notify>
|
|
<u-notify ref="uNotify"></u-notify>
|
|
|
<u-toast ref="uToast"></u-toast>
|
|
<u-toast ref="uToast"></u-toast>
|
|
@@ -119,7 +77,9 @@
|
|
|
</view>
|
|
</view>
|
|
|
</template>
|
|
</template>
|
|
|
<script>
|
|
<script>
|
|
|
- import { mapGetters } from 'vuex'
|
|
|
|
|
|
|
+ import {
|
|
|
|
|
+ mapGetters
|
|
|
|
|
+ } from 'vuex'
|
|
|
import to from 'await-to-js'
|
|
import to from 'await-to-js'
|
|
|
import followApi from '../../api/follow'
|
|
import followApi from '../../api/follow'
|
|
|
import custApi from '../../api/customer'
|
|
import custApi from '../../api/customer'
|
|
@@ -128,7 +88,10 @@
|
|
|
import CustomerContact from '../../components/CustomerContact'
|
|
import CustomerContact from '../../components/CustomerContact'
|
|
|
export default {
|
|
export default {
|
|
|
name: 'omsIndex',
|
|
name: 'omsIndex',
|
|
|
- components: { CustomerContact, ProjectContact },
|
|
|
|
|
|
|
+ components: {
|
|
|
|
|
+ CustomerContact,
|
|
|
|
|
+ ProjectContact
|
|
|
|
|
+ },
|
|
|
data() {
|
|
data() {
|
|
|
return {
|
|
return {
|
|
|
imageValue: [],
|
|
imageValue: [],
|
|
@@ -137,8 +100,7 @@
|
|
|
showMode: false, //选择行业
|
|
showMode: false, //选择行业
|
|
|
showDate: false,
|
|
showDate: false,
|
|
|
modeColumns: [
|
|
modeColumns: [
|
|
|
- [
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ [{
|
|
|
label: '电话',
|
|
label: '电话',
|
|
|
id: '10',
|
|
id: '10',
|
|
|
},
|
|
},
|
|
@@ -215,14 +177,18 @@
|
|
|
async initData() {
|
|
async initData() {
|
|
|
if (this.targetType == '10') {
|
|
if (this.targetType == '10') {
|
|
|
//客户
|
|
//客户
|
|
|
- const [err, res] = await to(custApi.getDetail({ ids: [this.curId] }))
|
|
|
|
|
|
|
+ const [err, res] = await to(custApi.getDetail({
|
|
|
|
|
+ ids: [this.curId]
|
|
|
|
|
+ }))
|
|
|
if (err) return
|
|
if (err) return
|
|
|
if (res && res.code == 200) {
|
|
if (res && res.code == 200) {
|
|
|
this.details = res.data.list[0]
|
|
this.details = res.data.list[0]
|
|
|
}
|
|
}
|
|
|
} else if (this.targetType == '20') {
|
|
} else if (this.targetType == '20') {
|
|
|
//项目
|
|
//项目
|
|
|
- const [err, res] = await to(prodApi.getDetail({ id: this.curId }))
|
|
|
|
|
|
|
+ const [err, res] = await to(prodApi.getDetail({
|
|
|
|
|
+ id: this.curId
|
|
|
|
|
+ }))
|
|
|
if (err) return
|
|
if (err) return
|
|
|
if (res && res.code == 200) {
|
|
if (res && res.code == 200) {
|
|
|
this.details = res.data
|
|
this.details = res.data
|
|
@@ -281,8 +247,7 @@
|
|
|
targetName: this.details.nboName,
|
|
targetName: this.details.nboName,
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- let params = Object.assign(
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ let params = Object.assign({
|
|
|
contactsId: this.addForm.contactsId,
|
|
contactsId: this.addForm.contactsId,
|
|
|
contactsName: this.addForm.contactsName,
|
|
contactsName: this.addForm.contactsName,
|
|
|
followContent: this.addForm.content,
|
|
followContent: this.addForm.content,
|
|
@@ -340,7 +305,14 @@
|
|
|
file: e.tempFiles[0].file,
|
|
file: e.tempFiles[0].file,
|
|
|
},
|
|
},
|
|
|
success: (res) => {
|
|
success: (res) => {
|
|
|
- this.addForm.files = [{ fileName: e.tempFiles[0].file.name, fileUrl: action }]
|
|
|
|
|
|
|
+ this.$refs.uToast.show({
|
|
|
|
|
+ type: 'success',
|
|
|
|
|
+ message: '附件上传成功',
|
|
|
|
|
+ })
|
|
|
|
|
+ this.addForm.files = [{
|
|
|
|
|
+ fileName: e.tempFiles[0].file.name,
|
|
|
|
|
+ fileUrl: action
|
|
|
|
|
+ }]
|
|
|
},
|
|
},
|
|
|
fail: (err) => {},
|
|
fail: (err) => {},
|
|
|
})
|
|
})
|
|
@@ -384,12 +356,14 @@
|
|
|
width: 100%;
|
|
width: 100%;
|
|
|
height: 284rpx;
|
|
height: 284rpx;
|
|
|
background: #3e7ef8;
|
|
background: #3e7ef8;
|
|
|
|
|
+
|
|
|
.title {
|
|
.title {
|
|
|
position: relative;
|
|
position: relative;
|
|
|
text-align: center;
|
|
text-align: center;
|
|
|
font-size: 32rpx;
|
|
font-size: 32rpx;
|
|
|
font-weight: bold;
|
|
font-weight: bold;
|
|
|
color: #ffffff;
|
|
color: #ffffff;
|
|
|
|
|
+
|
|
|
.back {
|
|
.back {
|
|
|
position: absolute;
|
|
position: absolute;
|
|
|
top: 0;
|
|
top: 0;
|
|
@@ -411,11 +385,13 @@
|
|
|
padding: 0 32rpx;
|
|
padding: 0 32rpx;
|
|
|
overflow: auto;
|
|
overflow: auto;
|
|
|
padding-bottom: 64rpx;
|
|
padding-bottom: 64rpx;
|
|
|
|
|
+
|
|
|
.form-label {
|
|
.form-label {
|
|
|
font-size: 32rpx;
|
|
font-size: 32rpx;
|
|
|
font-weight: bold;
|
|
font-weight: bold;
|
|
|
color: #323232;
|
|
color: #323232;
|
|
|
padding-bottom: 18rpx;
|
|
padding-bottom: 18rpx;
|
|
|
|
|
+
|
|
|
.label-tag {
|
|
.label-tag {
|
|
|
width: 15rpx;
|
|
width: 15rpx;
|
|
|
height: 15rpx;
|
|
height: 15rpx;
|
|
@@ -424,9 +400,11 @@
|
|
|
margin-right: 10rpx;
|
|
margin-right: 10rpx;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.upload-file-box {
|
|
.upload-file-box {
|
|
|
padding: 20rpx 0;
|
|
padding: 20rpx 0;
|
|
|
position: relative;
|
|
position: relative;
|
|
|
|
|
+
|
|
|
.upload-btn {
|
|
.upload-btn {
|
|
|
position: absolute;
|
|
position: absolute;
|
|
|
right: 0;
|
|
right: 0;
|
|
@@ -434,6 +412,7 @@
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.save {
|
|
.save {
|
|
|
width: 569rpx;
|
|
width: 569rpx;
|
|
|
height: 92rpx;
|
|
height: 92rpx;
|