You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
369 lines
10 KiB
369 lines
10 KiB
|
3 months ago
|
<template>
|
||
|
|
<view class="page-css">
|
||
|
|
<u-form
|
||
|
|
labelPosition="left"
|
||
|
|
labelWidth="120"
|
||
|
|
:model="feedbackForm"
|
||
|
|
:rules="rules"
|
||
|
|
ref="backForm"
|
||
|
|
>
|
||
|
|
<u-form-item label="工单编号" prop="soCode" borderBottom ref="item1" :required="true">
|
||
|
|
<u-input v-model="feedbackForm.soCode" :border="false"></u-input>
|
||
|
|
</u-form-item>
|
||
|
|
<u-form-item label="客户名称" prop="customerName" borderBottom ref="item1" :required="true">
|
||
|
|
<u-input v-model="feedbackForm.customerName" :border="false"></u-input>
|
||
|
|
</u-form-item>
|
||
|
|
<u-form-item label="联系方式" prop="contactPhone" borderBottom ref="item1" :required="true">
|
||
|
|
<u-input v-model="feedbackForm.contactPhone" :border="false"></u-input>
|
||
|
|
</u-form-item>
|
||
|
|
<view class="" @click="showProblemType = true">
|
||
|
|
<u-form-item label="问题分类" prop="problemTypeName" borderBottom :required="true">
|
||
|
|
<view class="" @click="showProblemType = true" style="display: flex;width: 100%;">
|
||
|
|
<u-input v-model="feedbackForm.problemTypeName" disabledColor="#ffffff"
|
||
|
|
placeholder="请选择问题分类" :border="false" style="pointer-events: none;width: 90%;" @click="showProblemType = true"></u-input>
|
||
|
|
</view>
|
||
|
|
<u-icon slot="right" name="arrow-right" @click="showProblemType = true"></u-icon>
|
||
|
|
</u-form-item>
|
||
|
|
</view>
|
||
|
|
<u-form-item label="问题描述" prop="problemDescription" borderBottom :required="true" >
|
||
|
|
<u-input v-model="feedbackForm.problemDescription" :border="true" placeholder="请输入问题描述"
|
||
|
|
type="textarea" :height="120" />
|
||
|
|
</u-form-item>
|
||
|
|
<u-form-item label="问题图片" prop="picAttaches" :border-bottom="false" >
|
||
|
|
<betone-upload :type="'images'" v-model="feedbackForm.attachList"
|
||
|
|
@changeFile="changePic" >
|
||
|
|
</betone-upload>
|
||
|
|
</u-form-item>
|
||
|
|
<u-form-item label="备注" prop="remark" borderBottom >
|
||
|
|
<u-input v-model="feedbackForm.remark" :border="true" placeholder="请输入备注"
|
||
|
|
type="textarea" :height="120" />
|
||
|
|
</u-form-item>
|
||
|
|
</u-form>
|
||
|
|
<u-button class="item-bottom" type="primary" @click="formSubmit()">
|
||
|
|
提交
|
||
|
|
</u-button>
|
||
|
|
<!-- <u-action-sheet
|
||
|
|
v-model="showProblemType"
|
||
|
|
:list="problemTypeArr"
|
||
|
|
@close="showProblemType = false"
|
||
|
|
@click="clickProblemType"
|
||
|
|
>
|
||
|
|
</u-action-sheet> -->
|
||
|
|
<u-select v-model="showProblemType" :list="problemTypeArr" @confirm="clickProblemType" @cancel="showProblemType = false"></u-select>
|
||
|
|
<u-select v-model="showProblem" :list="problemArr" @confirm="clickProblem" @cancel="showProblem = false"></u-select>
|
||
|
|
<!-- <u-action-sheet
|
||
|
|
v-model="showProblem"
|
||
|
|
:list="problemArr"
|
||
|
|
@close="showProblemType = false"
|
||
|
|
@click="clickProblem"
|
||
|
|
>
|
||
|
|
</u-action-sheet> -->
|
||
|
|
<u-popup v-model="showGoods" mode="bottom" height="400px">
|
||
|
|
<view class="popup-content">
|
||
|
|
<view class="title_box">搜索</view>
|
||
|
|
<view class="search_box">
|
||
|
|
<u-input v-model="goods" style="width: 64%; margin-right: 20rpx;margin-left: 20rpx;" placeholder="商品名称/商品编码" border></u-input>
|
||
|
|
<u-button style="width: 17%;height: 70rpx; margin-right: 20rpx;" type="primary" @click="handleSearch">搜索</u-button>
|
||
|
|
<u-button style="width: 17%;height: 70rpx;margin-right: 20rpx;" @click="handleReset">重置</u-button>
|
||
|
|
</view>
|
||
|
|
<view class="list_box">
|
||
|
|
<view class="list_item" v-for="item in goodsList" :key="item.id" @click="clickItem(item)">
|
||
|
|
<text>{{item.name}}</text> <text>{{item.code}}</text>
|
||
|
|
</view>
|
||
|
|
</view>
|
||
|
|
</view>
|
||
|
|
|
||
|
|
</u-popup>
|
||
|
|
</view>
|
||
|
|
</template>
|
||
|
|
|
||
|
|
<script>
|
||
|
|
export default{
|
||
|
|
data(){
|
||
|
|
return{
|
||
|
|
action:'/blade-resource/oss/endpoint/put-file',
|
||
|
|
fileList:[],
|
||
|
|
selector:['1','2'],
|
||
|
|
feedbackForm:{
|
||
|
|
attachList:[]
|
||
|
|
},
|
||
|
|
code:'',
|
||
|
|
userInfo:{},
|
||
|
|
headers:{},
|
||
|
|
showGoods:false,
|
||
|
|
showProblemType:false,
|
||
|
|
problemArr:[],
|
||
|
|
problemTypeArr:[],
|
||
|
|
showProblem:false,
|
||
|
|
formDisabled:false,
|
||
|
|
goodsList:[],
|
||
|
|
goodsArr:[],
|
||
|
|
goods:'',
|
||
|
|
rules: {
|
||
|
|
problemTypeName: [{
|
||
|
|
type: "string",
|
||
|
|
required: true,
|
||
|
|
message: "请选择问题类型",
|
||
|
|
trigger: ["blur", "change"],
|
||
|
|
}],
|
||
|
|
problemDescription: [{
|
||
|
|
type: "string",
|
||
|
|
required: true,
|
||
|
|
message: "请输入问题描述",
|
||
|
|
trigger: ["blur", "change"],
|
||
|
|
}],
|
||
|
|
customerName:[{
|
||
|
|
type: "string",
|
||
|
|
required: true,
|
||
|
|
message: "请输入客户名称",
|
||
|
|
trigger: ["blur", "change"],
|
||
|
|
}],
|
||
|
|
soCode:[{
|
||
|
|
type: "string",
|
||
|
|
required: true,
|
||
|
|
message: "请输入工单编号",
|
||
|
|
trigger: ["blur", "change"],
|
||
|
|
}],
|
||
|
|
contactPhone:[{
|
||
|
|
type: "string",
|
||
|
|
required: true,
|
||
|
|
message: "请输入联系方式",
|
||
|
|
trigger: ["blur", "change"],
|
||
|
|
},
|
||
|
|
{
|
||
|
|
validator: (rule, value, callback) => {
|
||
|
|
return this.$u.test.mobile(value);
|
||
|
|
},
|
||
|
|
message: '请输入正确的联系方式',
|
||
|
|
trigger: ["change", "blur"]
|
||
|
|
},
|
||
|
|
]
|
||
|
|
},
|
||
|
|
}
|
||
|
|
},
|
||
|
|
onLoad(option){
|
||
|
|
console.log('option--------------',option)
|
||
|
|
if(option){
|
||
|
|
this.code = option.soCode ? option.soCode : ''
|
||
|
|
// this.feedbackForm = {
|
||
|
|
// ...this.feedbackForm,
|
||
|
|
// soCode:option.soCode ? option.soCode : '',
|
||
|
|
// soId:option.soId ? option.soId : ''
|
||
|
|
// }
|
||
|
|
}
|
||
|
|
|
||
|
|
// this.feedbackForm = {
|
||
|
|
// ...this.feedbackForm,
|
||
|
|
// commodityId:option.id,
|
||
|
|
// commodityName:option.name
|
||
|
|
// }
|
||
|
|
},
|
||
|
|
// 必须要在onReady生命周期,因为onLoad生命周期组件可能尚未创建完毕
|
||
|
|
onReady() {
|
||
|
|
this.$refs.backForm.setRules(this.rules);
|
||
|
|
},
|
||
|
|
mounted(){
|
||
|
|
this.userInfo = uni.getStorageSync("userinfo")
|
||
|
|
this.getProblemList()
|
||
|
|
if(this.code != ''){
|
||
|
|
this.getDetail()
|
||
|
|
}
|
||
|
|
},
|
||
|
|
methods:{
|
||
|
|
getDetail(){
|
||
|
|
this.$u.api.getOrderDetail({code:this.code}).then(res =>{
|
||
|
|
console.log('code res--------------------------',res)
|
||
|
|
this.feedbackForm = {
|
||
|
|
...this.feedbackForm,
|
||
|
|
soCode:res.data.code ? res.data.code : '',
|
||
|
|
soId:res.data.id ? res.data.id : ''
|
||
|
|
}
|
||
|
|
}).catch((err) =>{
|
||
|
|
console.log('err------------------------',err)
|
||
|
|
})
|
||
|
|
},
|
||
|
|
// 修改图片
|
||
|
|
changePic(file, index) {
|
||
|
|
console.log('file---------------------',file)
|
||
|
|
this.feedbackForm.attachList = file
|
||
|
|
},
|
||
|
|
// 搜索数据
|
||
|
|
handleSearch(){
|
||
|
|
console.log('goods----------------',this.goods)
|
||
|
|
if(this.goods == ''){
|
||
|
|
this.goodsList = this.goodsArr
|
||
|
|
}else{
|
||
|
|
let arr = this.goodsArr.filter(item => item.name.includes(this.goods) || item.code.includes(this.goods))
|
||
|
|
console.log('arr-------------',arr)
|
||
|
|
this.goodsList = arr
|
||
|
|
}
|
||
|
|
|
||
|
|
},
|
||
|
|
// 重置搜索
|
||
|
|
handleReset(){
|
||
|
|
this.goods = ''
|
||
|
|
this.goodsList = this.goodsArr
|
||
|
|
},
|
||
|
|
// 选择商品
|
||
|
|
clickItem(item){
|
||
|
|
console.log('item----------------',item)
|
||
|
|
this.feedbackForm = {
|
||
|
|
...this.feedbackForm,
|
||
|
|
commodityName:item.name,
|
||
|
|
commodityCode:item.code,
|
||
|
|
commodityId:item.id,
|
||
|
|
commoditySpecifications:item.specifications,
|
||
|
|
commodityModelNum:item.modelNum,
|
||
|
|
}
|
||
|
|
this.showGoods = false
|
||
|
|
},
|
||
|
|
// 获取问题类型
|
||
|
|
getProblemList(){
|
||
|
|
this.$u.api.getProblemType().then(res =>{
|
||
|
|
console.log('prores-------------------------',res)
|
||
|
|
res.data.map(item =>{
|
||
|
|
this.problemTypeArr.push({
|
||
|
|
label:item.dictValue,
|
||
|
|
value:item.dictKey,
|
||
|
|
children:item.children
|
||
|
|
})
|
||
|
|
})
|
||
|
|
}).catch(err =>{
|
||
|
|
|
||
|
|
})
|
||
|
|
},
|
||
|
|
clickProblemType(e){
|
||
|
|
console.log('e-----------------',e)
|
||
|
|
this.feedbackForm.problemType = e[0].value
|
||
|
|
this.feedbackForm.problemTypeName = e[0].label
|
||
|
|
// this.problemArr =
|
||
|
|
let tmp = this.problemTypeArr.find(item => item.value == e[0].value)
|
||
|
|
console.log('tmp---------------------',tmp)
|
||
|
|
this.problemArr = []
|
||
|
|
if(tmp && tmp.children){
|
||
|
|
tmp.children.map(item =>{
|
||
|
|
this.problemArr.push({
|
||
|
|
label:item.dictValue,
|
||
|
|
value:item.dictKey,
|
||
|
|
})
|
||
|
|
})
|
||
|
|
|
||
|
|
}
|
||
|
|
},
|
||
|
|
clickProblem(e) {
|
||
|
|
this.feedbackForm.problemName = e[0].label
|
||
|
|
this.feedbackForm.problemTypeTwo = e[0].value
|
||
|
|
},
|
||
|
|
getCurrengTime(){
|
||
|
|
var now = new Date();
|
||
|
|
var year = now.getFullYear();
|
||
|
|
var month = (now.getMonth() + 1) < 10 ? '0' + (now.getMonth() + 1) : now.getMonth() + 1 ; // 注意加 1
|
||
|
|
var day = now.getDate();
|
||
|
|
var hour = now.getHours();
|
||
|
|
var minute = now.getMinutes();
|
||
|
|
var second = now.getSeconds();
|
||
|
|
|
||
|
|
let time = year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second
|
||
|
|
return time
|
||
|
|
|
||
|
|
},
|
||
|
|
// 修改图片
|
||
|
|
changePic(file, index) {
|
||
|
|
console.log('file-------------------------',file)
|
||
|
|
// this.breakdownInfo[index].picAttaches = file
|
||
|
|
},
|
||
|
|
formSubmit(){
|
||
|
|
this.$nextTick(() => {
|
||
|
|
this.$refs.backForm.validate(valid => {
|
||
|
|
if (valid) {
|
||
|
|
console.log('valid----------------',valid)
|
||
|
|
let query = {
|
||
|
|
// ...this.feedbackForm,
|
||
|
|
feedbackTime:this.getCurrengTime(),
|
||
|
|
createUser:this.userInfo.user_id,
|
||
|
|
updateUser: this.userInfo.user_id,
|
||
|
|
createDept: this.userInfo.dept_id,
|
||
|
|
attachList:this.feedbackForm.attachList,
|
||
|
|
problemType:this.feedbackForm.problemType,
|
||
|
|
problemDescription:this.feedbackForm.problemDescription,
|
||
|
|
soCode:this.feedbackForm.soCode,
|
||
|
|
soId:this.feedbackForm.soId,
|
||
|
|
customerName:this.feedbackForm.customerName,
|
||
|
|
contactPhone:this.feedbackForm.contactPhone,
|
||
|
|
remark:this.feedbackForm.remark
|
||
|
|
}
|
||
|
|
console.log('query==================',query)
|
||
|
|
this.$u.api.addQuality(query).then(res => {
|
||
|
|
console.log('res----------',res)
|
||
|
|
if (res.code == 200) {
|
||
|
|
uni.switchTab({
|
||
|
|
url: "/pages/home/feedList",
|
||
|
|
});
|
||
|
|
} else {
|
||
|
|
uni.$u.toast(res.msg);
|
||
|
|
}
|
||
|
|
}).catch(err=>{
|
||
|
|
console.log('err-------',err)
|
||
|
|
})
|
||
|
|
}
|
||
|
|
})
|
||
|
|
})
|
||
|
|
},
|
||
|
|
}
|
||
|
|
}
|
||
|
|
</script>
|
||
|
|
|
||
|
|
<style lang="scss" scoped>
|
||
|
|
.page-css{
|
||
|
|
overflow-x: hidden;
|
||
|
|
padding: 20rpx;
|
||
|
|
background: #fff;
|
||
|
|
|
||
|
|
.popup-content {
|
||
|
|
position: relative;
|
||
|
|
background: #fff;
|
||
|
|
box-shadow: 0px, -2px rgba(0, 0, 0, 0.25);
|
||
|
|
position: relative;
|
||
|
|
min-height: 320rpx;
|
||
|
|
|
||
|
|
.title_box{
|
||
|
|
font-size: 18px;
|
||
|
|
width: 100%;
|
||
|
|
padding: 32rpx;
|
||
|
|
text-align: center;
|
||
|
|
top: 0;
|
||
|
|
background: #fff;
|
||
|
|
position: fixed;
|
||
|
|
}
|
||
|
|
|
||
|
|
.search_box{
|
||
|
|
width: 100%;
|
||
|
|
position: fixed;
|
||
|
|
background: #fff;
|
||
|
|
display: flex;
|
||
|
|
top: 92rpx;
|
||
|
|
|
||
|
|
/deep/ .u-input{
|
||
|
|
height: 70rpx;
|
||
|
|
}
|
||
|
|
|
||
|
|
/deep/ .u-input__input{
|
||
|
|
height: 70rpx;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
.list_box{
|
||
|
|
width: 100%;
|
||
|
|
overflow-y: auto;
|
||
|
|
margin-top: 172rpx;
|
||
|
|
|
||
|
|
.list_item{
|
||
|
|
text-align: center;
|
||
|
|
padding: 30rpx 20rpx;
|
||
|
|
border-bottom: 1px solid #E8E8E8;
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
</style>
|