Commit dae2ef52 authored by Mac's avatar Mac

1

parent d6ec30be
......@@ -727,8 +727,6 @@
"path": "carrier/list" //品牌详情
}, {
"path": "identification" //身份识别
}, {
"path": "old_identification" //旧的身份识别
}, {
"path": "firstShop/firstShop"
}, {
......
......@@ -319,15 +319,15 @@
})
},
gosignUp(){//立即报名
let parms = {
url: "/api/AppletCustomForm/GetCustomForm",
data:{FormType:this.detailsData.ListType}
let data = {
Id : this.detailsData.Id,
ListType:this.detailsData.ListType,
template_message_list : this.detailsData.template_message_list
}
this.request2(parms, (res) => {
if (res.resultCode == 1) {
}
})
uni.navigateTo({//编码
url: "/pages/kotra/billboard/listsignUp?formData="+encodeURIComponent(JSON.stringify(data)),
});
}
}
}
......
<template>
<view class="main">
<view class="input" :style="disabled?'background-color:#f5f7fa':''">
<input @click="showModal" v-model="_value" :style="disabled?'color:#c0c4cc':''" :placeholder="placeholder" disabled/>
<!-- <text v-if="clearable&&!disabled" @click="empty" class="selectIcon iconcross"></text> -->
<u-icon name="arrow" color="#909399" size="36" ></u-icon>
</view>
<view class="select-modal" :class="isShowModal?'show':''" @tap="hideModal">
<view class="select-dialog" @tap.stop="" :style="{backgroundColor:bgColor}">
<view class="select-bar bg-white">
<view class="action text-blue" @tap="cancelClick">{{cancelText}}</view>
<view class="action text-green" @tap="confirmClick">{{confirmText}}</view>
</view>
<view class="select-content">
<view class="select-item" v-for="(item,index) in list" :key="index"
:style="valueIndexOf(item)?'color:'+selectColor+';background-color:'+selectBgColor+';':'color:'+color+';'"
@click="select(item)">
<view class="title">{{getLabelKeyValue(item)}}</view>
<view style="width: 16px;">
<text class="selectIcon icongou" v-if="valueIndexOf(item)"></text>
</view>
</view>
</view>
<view style="width: 100%;height: 30px;"></view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
isShowModal:false
};
},
props: {
value:{
type:[Number,String,Array,Object],
default:null
},
placeholder:{ // 占位符
default: "",
type: String
},
multiple:{ // 是否多选
default: false,
type: Boolean
},
list: {
default: () => [],
type: Array
},
valueKey:{ // 指定list中valueKey的值作为下拉框绑定内容
default: 'value',
type: String
},
labelKey:{ // 指定list中labelKey的值作为下拉框显示内容
default: 'label',
type: String
},
disabled: {
default: false,
type: Boolean
},
clearable:{
default: false,
type: Boolean
},
cancelText:{
default: "取消",
type: String
},
confirmText:{
default: "确定",
type: String
},
color:{
default: "#000000",
type: String
},
selectColor:{
default: "#0081ff",
type: String
},
bgColor:{
default: "#F1F1F1",
type: String
},
selectBgColor:{
default: "#FFFFFF",
type: String
}
},
computed: {
_value: {
get() {
return this.get_value(this.value);
},
set(val) {
this.$emit('change', val);
}
}
},
created() {
if(this.multiple == true){
this.value = []
}
},
methods: {
get_value(val){ // 将数组值转换为以,隔开的字符串
if(val || val===0){
if(Array.isArray(val)){
let chooseAttr = []
val.forEach(item=>{
let choose = this.list.find(temp => {
let val_val = this.getValueKeyValue(temp)
return item === val_val
})
chooseAttr.push(choose)
})
let values = chooseAttr.map(temp => this.getLabelKeyValue(temp)).join(',')
return values
} else {
let choose = this.list.find(temp => {
let val_val = this.getValueKeyValue(temp)
return val === val_val
})
return this.getLabelKeyValue(choose)
}
} else {
return ""
}
},
select(item){ // 点击选项
let val = this.getValueKeyValue(item);
if(this.multiple){
let _value = this.value;
let index = _value.indexOf(val);
if(index!=-1){
_value.splice(index,1)
this.$emit('change', _value)
} else {
_value.push(val)
this.$emit('change', _value)
}
} else {
this.value = val
this.$emit('change', val)
this.hideModal()
}
},
valueIndexOf(item){
let val = this.getValueKeyValue(item);
if(Array.isArray(this.value)){
return this.value.indexOf(val)!=-1
} else {
return this.value === val
}
},
getLabelKeyValue(item){ // 获取label
return item[this.labelKey]
},
getValueKeyValue(item){ // 获取value
return item[this.valueKey]
},
empty(){ // 清空
if(this.multiple){
this.$emit('change', [])
} else {
this.$emit('change', '')
}
},
cancelClick(){ // 点击取消
this.$emit('cancel', this._value)
this.hideModal()
},
confirmClick(){ // 点击确定
this.$emit('confirm', this._value)
this.hideModal()
},
showModal(){ // 显示model
if(!this.disabled){
this.isShowModal = true
}
},
hideModal(){ // 隐藏model
this.isShowModal = false
}
}
}
</script>
<style>
@font-face {font-family: "selectIcon";
src: url('//at.alicdn.com/t/font_1833441_ycfzdhg2u3.eot?t=1590375117208'); /* IE9 */
src: url('//at.alicdn.com/t/font_1833441_ycfzdhg2u3.eot?t=1590375117208#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAMEAAsAAAAABvQAAAK4AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCDBgqBRIFCATYCJAMMCwgABCAFhQUHNRsfBsg+QCa3uoO0oAJTMwhxVu965keqWBy1hkbwtfzWb2Z279/shRhJisKF6FApKLI7oyBbpAaHo3w24k+ca9EUJbDmjaeznUdZ/FOUlkWdJ33rizZY/Pw6J5Xw0qKYxHTMesePHVT6EFpaC4zV70sKi2bYgNPc1w0WHnDVC/e/UnNTgyP+4Jq6BBpIHoisgypLaIAFEtU0wgeaIG8Yu4nAIZwnUK1QgFfOT6nUUoBpgXjj2lqplTMpiuXtCW3N2iK+aPTS2/Qdnzny8d+5IEiaDMy99exklra//FrKnX48pChmgrq5QcYRQCEe17ruqgqLAKv8WntwqwhpLms/nB5yW/iHRxJEC0QOgT3NnfgF01NBKvOuIzNoZdh5gJuAeGrsozE8vOJ7u5D832oz55039W5G+S52K0H+zNf1TJz07k26kqoQybRfwVFV4rjDS/K8EXUyuF1cXnT3weKS9Rvdm/xe7h8oA1hLwOR18R+Y4n4zwpr4z5SU089Vc+cpfWL+mn5APmT3Z39jeOs/GbWjK+DnmsuL/u6ehMX4j4yedSVkAUUuPh3TY022MtKZUEOtPqCb8Bkvnr5XT6imU0gGrEJW7aAL/gw0OhegVV2F6pC7uTOppirKIA4MFQhTrpCM+AbZlDu64L/QmAkQWlMhQXU75D07O9Gtl0PUYjTBLyAzOLNQYtypIEEjvsXtBLQTooV2nrQrGEau2gKmZlR4L8gwnGtBJbUn1diCOOQUnEkTkRAOeci9KHOQxvFro+tx3ZcGAaeljstCSBNDJuArgIyBYyy6OdZxAhHIELu1IC9AtgShCVtLltEKrSff1XoHJo3RC33hM63o3j6pSNkmqmIWEAtxFHB2OwoRBAfyeqE3r2ogHeF42dBhs7gvf7CukH5MmlUGOCpHihxFfs6TehDyKCqVAA==') format('woff2'),
url('//at.alicdn.com/t/font_1833441_ycfzdhg2u3.woff?t=1590375117208') format('woff'),
url('//at.alicdn.com/t/font_1833441_ycfzdhg2u3.ttf?t=1590375117208') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
url('//at.alicdn.com/t/font_1833441_ycfzdhg2u3.svg?t=1590375117208#selectIcon') format('svg'); /* iOS 4.1- */
}
.selectIcon {
font-family: "selectIcon" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icongou:before {
content: "\e61c";
}
.iconcross:before {
content: "\e61a";
}
</style>
<style lang="scss" scoped>
.main{
font-size: 28rpx;
}
.bg-white{
background-color: #FFFFFF;
}
.text-blue{
color: #0081ff;
}
.text-green{
color: #39b54a;
}
.input {
display: flex;
align-items:center;
font-size: 28rpx;
height: 60rpx;
border-bottom:1px solid #DADCE6;
padding:10rpx 0 20rpx 0;
// border-style: solid;
// border-width: 1rpx;
// border-color: rgba(0, 0, 0, 0.1);
input{
flex: 1;
}
}
.select-modal {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 9999;
opacity: 0;
outline: 0;
text-align: center;
-ms-transform: scale(1.185);
transform: scale(1.185);
backface-visibility: hidden;
perspective: 2000rpx;
background: rgba(0, 0, 0, 0.6);
transition: all 0.3s ease-in-out 0s;
pointer-events: none;
margin-bottom: -1000rpx;
&::before {
content: "\200B";
display: inline-block;
height: 100%;
vertical-align: bottom;
}
.select-dialog {
position: relative;
display: inline-block;
margin-left: auto;
margin-right: auto;
background-color: #f8f8f8;
overflow: hidden;
width: 100%;
border-radius: 0;
.select-content{
// background-color: #F1F1F1;
max-height: 420rpx;
overflow:auto;
.select-item{
padding: 20rpx;
display: flex;
.title{
flex: 1;
}
}
}
}
}
.select-modal.show {
opacity: 1;
transition-duration: 0.3s;
-ms-transform: scale(1);
transform: scale(1);
overflow-x: hidden;
overflow-y: auto;
pointer-events: auto;
margin-bottom: 0;
}
.select-bar {
padding: 0 20rpx;
display: flex;
position: relative;
align-items: center;
min-height: 80rpx;
justify-content: space-between;
.action {
display: flex;
align-items: center;
height: 100%;
justify-content: center;
max-width: 100%;
}
}
</style>
......@@ -21,6 +21,8 @@
<singleText v-if="item.CompKey=='SingleLineText'" :CompData="item.CompData"></singleText>
<multipleText v-if="item.CompKey=='MultiLineText'" :CompData="item.CompData"></multipleText>
<selectChoice v-if="item.CompKey=='DorpDownList'" :CompData="item.CompData"></selectChoice>
<pictureUpload v-if="item.CompKey=='ImageUploadComp'" :CompData="item.CompData"></pictureUpload>
<videoUpload v-if="item.CompKey=='VideoUploadComp'" :CompData="item.CompData"></videoUpload>
</template>
</view>
</template>
......@@ -29,11 +31,16 @@
import singleText from "./plugin/singleText";
import multipleText from "./plugin/multipleText"
import selectChoice from "./plugin/selectChoice"
import pictureUpload from "./plugin/pictureUpload"
import videoUpload from "./plugin/videoUpload"
export default {
components: {
singleText,
multipleText,
selectChoice
selectChoice,
pictureUpload,
videoUpload
},
data() {
return {
......@@ -42,28 +49,38 @@
Id: 5,
},
dataList: [],
pageCount: 1
pageCount: 1,
formData:null
}
},
created() {},
created() {
uni.setNavigationBarTitle({
title: "榜单报名",
});
},
mounted() {
this.getData();
},
onLoad(option) {
if(option && option.formData){//解码
this.formData = JSON.parse(decodeURIComponent(option.formData))
console.log(this.formData)
this.getCustomForm()
}
},
onLoad() {},
methods: {
getData() {
this.request2({
url: "/api/AppletCustomForm/GetCustomFormInfo",
data: this.msg,
},
(res) => {
if (res.resultCode == 1) {
console.log(res,'数据');
this.dataList=res.data.FormDataList;
}
getCustomForm(){
let parms = {
url: "/api/AppletCustomForm/GetCustomForm",
data:{FormType:this.formData.ListType}
}
this.request2(parms, (res) => {
if (res.resultCode == 1) {
this.dataList=res.data.FormData;
}
);
}
})
},
}
}
</script>
<template>
<view>
<view class="single_Phone">
<span style="color:red;margin-right:5rpx;" v-show="CompData.IsRequire">*</span>{{CompData.Name}}
</view>
<u-upload ref="uUpload" :action="action" :show-tips="false" @on-remove="onRemove"
@on-oversize="onversize"
@on-exceed="onexceed"
:max-size="CompData.FileSizeLimit * 1024 * 1024"
:max-count="CompData.FileCount"
:file-list="fileList"
@on-success="uploadSuccessHandler"
></u-upload>
<view class="single_Remark" v-if="CompData.Remark">{{CompData.Remark}}</view>
</view>
</template>
<script>
export default {
props: ["CompData"],
data(){
return{
action: this.host2 + "/api/File/UploadTencent",
fileList:[],
}
},
created() {
let MallBaseId = uni.getStorageSync("mall_UserInfo").MallBaseId ? uni.getStorageSync("mall_UserInfo").MallBaseId : 1;
this.action = this.host2 + '/api/File/UploadTencent?MallBaseId=' + MallBaseId
},
methods:{
uploadSuccessHandler(data, index, lists) {
let r = JSON.parse(data);
this.CompData.FileList.push(r.data);
console.log(this.CompData.FileList)
},
onRemove(index) {
this.CompData.FileList.splice(index, 1);
},
onversize(){
uni.showToast({
title: '超出允许的文件大小',
icon: "none"
});
},
onexceed(){
uni.showToast({
title: '超出最大允许的文件个数',
icon: "none"
});
}
}
}
</script>
<style>
</style>
<template>
<view>
<u-picker v-model="CompData.OptionValue" mode="selector" :list="CompData.OptionList"></u-picker>
<view class="single_Phone">
<span style="color:red;margin-right:5rpx;" v-show="CompData.IsRequire">*</span>{{CompData.Name}}
</view>
<ld-select :list="CompData.OptionList"
label-key="Name" value-key="Id"
:multiple="CompData.IsMultiple"
placeholder="请选择"
v-model="CompData.OptionValue"
@change="selectChange"></ld-select>
<view class="single_Remark" v-if="CompData.Remark">{{CompData.Remark}}</view>
</view>
</template>
<script>
import ldSelect from '../components/ld-select.vue'
export default {
props: ["CompData"],
components: { ldSelect},
data(){
return{
}
},
created() {
},
methods:{
selectChange(e){
console.log(e)
this.CompData.OptionValue = e
console.log(this.CompData)
// this.CompData.OptionList.forEach(x=>{
// if(x.Id == e){
// this.CompData.OptionValue = x.Name
// }
// })
}
}
}
</script>
<style>
......
<template>
<view>
<view class="single_Phone">
<span style="color:red;margin-right:5rpx;" v-show="CompData.IsRequire">*</span>{{CompData.Name}}
</view>
<view style="width:100%; height: 320rpx;position: relative;margin-bottom: 10px;" v-for="(x,y) in FileList" :key="y">
<video class="mmyVideo" :id="'myVideo'+y" :src="x" :controls='controls' :show-center-play-btn='false'
:show-fullscreen-btn='false' @fullscreenchange='videoControl'></video>
<view
style="width: 100%;height: 100%;position: absolute;left: 0;top: 0;display: flex;align-items: center;justify-content: center;"
@click="enlarge('myVideo'+y)">
<u-icon name="play-circle-o" :size="70" color="#FFF"></u-icon>
</view>
<view style="width: 50rpx;height: 50rpx;position: absolute;right: 10rpx;top:10rpx;
border-radius: 25rpx;
background: #F30329;
display: flex;
align-items: center;
justify-content: center;
" @tap.stop="CompData.FileList.splice(y,1),FileList.splice(y,1)">
<u-icon class="u-icon" name="cross" size="30" color="#ffffff"></u-icon>
</view>
</view>
<view>
<view slot="addBtn" class="slot-btn" @click="upvideo()">
<image class="image"
src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/1616573063000_398.png"
mode="widthFix"></image>
</view>
</view>
<view class="single_Remark" v-if="CompData.Remark">{{CompData.Remark}}</view>
</view>
</template>
<script>
export default {
props: ["CompData"],
data() {
return {
action: this.host2 + "/api/File/UploadTencent",
controls: false, //显示默认控件
FileList:[],
}
},
created() {
let MallBaseId = uni.getStorageSync("mall_UserInfo").MallBaseId ? uni.getStorageSync("mall_UserInfo")
.MallBaseId : 1;
this.action = this.host2 + '/api/File/UploadTencent?MallBaseId=' + MallBaseId
this.FileList = JSON.parse((JSON.stringify(this.CompData.FileList)))
},
methods: {
enlarge(file) {
// 全屏
this.videoContext = uni.createVideoContext(file);
this.videoContext.requestFullScreen({
direction: 0
})
},
videoControl(e) {
if (e.detail.fullScreen == false) {
this.videoContext.stop()
this.controls = false
} else {
this.videoContext.play()
this.controls = true
}
},
upvideo() {
let that = this
uni.chooseVideo({
count: 1,
sourceType: ['camera', 'album'],
success: function(res) {
that.upFile(res.tempFilePath, 1)
uni.showLoading({
title: '上传中...'
})
},
fail(err) {
console.log(err, )
}
});
},
upFile(filePath, type) {
let MallBaseId = uni.getStorageSync("mall_UserInfo").MallBaseId ? uni.getStorageSync("mall_UserInfo")
.MallBaseId :
1;
let action = this.host2 + '/api/File/UploadTencent?MallBaseId=' + MallBaseId
let that = this
uni.uploadFile({
url: action,
filePath: filePath,
name: 'file',
formData: {
user: 'tesdt'
},
success: (uploadFileRes) => {
uni.hideLoading()
if (uploadFileRes.statusCode == 200) {
let data = JSON.parse(uploadFileRes.data)
// that.model.VideoUrl=data.data
that.FileList.push(data.data)
that.CompData.FileList.push(data.data)
that.$forceUpdate()
}
},
fail: function(res) {
console.log(res)
wx.showToast({
title: '上传失败!',
icon: 'none',
duration: 1000
})
}
});
},
}
}
</script>
<style>
.slot-btn {
width: 220rpx;
height: 220rpx;
background: #F5F5F5;
border-radius: 17rpx;
display: flex;
align-items: center;
justify-content: center;
}
.slot-btn .image {
width: 54rpx;
height: auto;
}
.mmyVideo {
width: 100%;
height: 100%;
}
</style>
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment