vue-cli环境的组件开发
1 <template>
2 <div>
3 <Modal class="pingjia" v-model="show">
4 <p class="title">请您对本次服务进行评分</p>
5 <div class="stars">
6 <span>服务态度:</span><Rate class="sbox" v-model="assess_content.friendScore"></Rate>
7 </div>
8 <div class="stars">
9 <span>工作效率:</span><Rate class="sbox" v-model="assess_content.speedScore"></Rate>
10 </div>
11 <div class="stars">
12 <span>完成质量:</span><Rate class="sbox" v-model="assess_content.qualityScore"></Rate>
13 </div>
14 <p class="sec_title">
15 <span>
16 印象标签
17 </span>
18 </p>
19 <ul class="kuaisupl clearfix">
20 <li v-for="item in tags" @click="assess($event)">{{item.tagName}}</li>
21 </ul>
22 <div class="tuijian">
23 <span>
24 <em @click="tuijian($event)" att-v="1" class="self_cion iconfont icon-tuijian" :class="{on:assess_content.isCommend==1}"></em>
25 <span>值得推荐</span>
26 </span>
27 <span>
28 <em @click="tuijian($event)" att-v="2" class="self_cion iconfont icon-butuijian" :class="{on:assess_content.isCommend==2}"></em>
29 <span>不推荐</span>
30 </span>
31 </div>
32 <div class="textarea">
33 <textarea v-model="assess_content.assessContent" placeholder="写下您对商家的评价吧~"></textarea>
34 </div>
35 <div slot="footer" class="footer">
36 <a class="sendbtn" @click="sendassess">确认提交</a>
37 </div>
38 </Modal>
39 </div>
40 </template>
41
42 <script>
43 import {orderAssess,getOrderassess} from "@/api/api"
44 export default{
45 props:{
46 ordernum:{
47 type:String,
48 default:''
49 },
50 },
51 data(){
52 return{
53 show:false,
54 assess_content:{
55 isCommend:0,
56 friendScore:0,
57 speedScore:0,
58 qualityScore:0,
59 assessTag:"",
60 assessContent:""
61 },
62 tags:"",
63 }
64 },
65 methods:{
66 assess($event){
67 $($event.target).toggleClass('active')
68 },
69 gettag(){
70 var _this=this
71 this.$ajax.get("http://*****/***.js").then(data => {
72 _this.tags = data.data
73 })
74 },
75 tuijian($event){
76 $('.self_cion').removeClass("on")
77 $($event.target).addClass("on")
78 var value=$($event.target).attr('att-v')
79 this.assess_content.isCommend=value
80 },
81 sendassess(){
82 var list=[]
83 $('.kuaisupl li').each(function(index,el){
84 if($(el).attr('class')=="active"){
85 list.push($(el).html())
86 }
87 })
88 var newlist=list.join(',')
89 this.assess_content.assessTag=newlist
90 var data=Object.assign({},this.assess_content,{"tradeNo":this.ordernum})
91 orderAssess(data).then(data=>{
92 if (data.code==0) {
93 this.$Notice.success({
94 desc: data.desc
95 });
96 this.show=false
97 this.finish()
98 }else{
99 this.$Notice.error({
100 desc: data.desc
101 });
102 }
103 })
104 },
105 finish(){
106 this.$emit("ok","ok")
107 },
108 plaction(){
109 getOrderassess({"tradeNo":this.ordernum}).then(data=>{
110 this.assess_content=Object.assign({},this.assess_content,JSON.parse(data.result))
111 var newarr=this.assess_content.assessTag
112 this.tags.forEach(function(el,index){
113 if(newarr.indexOf(el.tagName)>=0){
114 $('.kuaisupl li').eq(index).addClass("active")
115 }
116 })
117
118 })
119 },
120 },
121 mounted(){
122 this.gettag()
123 },
124 watch:{
125 show(newv,oldv){
126 if (newv==false) {
127 this.assess_content={
128 isCommend:0,
129 friendScore:0,
130 speedScore:0,
131 qualityScore:0,
132 assessTag:"",
133 assessContent:""
134 }
135 $('.kuaisupl li').removeClass("active")
136 }else{
137 this.plaction()
138 }
139 }
140 }
141 }
142 </script>
props:接受外部传过来的参数 (内部直接this.**调用)
$emit 第一个参数是给调用的,第二个是给外部传值
父级调用
先import引入组件
再components调用组件
设置了ref的话可以直接通过 $refs.pl.子组件参数 直接修改子组件内部参数
一个简单的组件就完成啦