Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

evaluate-list.vue 5.5KB

pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
pirms 2 gadiem
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. <!-- 评价列表 -->
  2. <template>
  3. <view style="padding: 30rpx">
  4. <evaluate-tab-item :tabs="state.tabs" @tabClick="tabClick" />
  5. <view class="list" :class="state.type === '2' ? 'btn-divider' : ''">
  6. <evaluate-issue-item
  7. :dataList="state.dataList"
  8. v-if="state.type === '1'"
  9. />
  10. <evaluate-business-item
  11. :dataList="state.dataList"
  12. v-if="state.type === '2'"
  13. />
  14. <evaluate-equity-item
  15. :dataList="state.dataList"
  16. v-if="state.type === '3'"
  17. />
  18. <evaluate-salesman-item
  19. :dataList="state.dataList"
  20. v-if="state.type === '4'"
  21. />
  22. </view>
  23. </view>
  24. <view class="evaluate-btn" v-if="state.type === '2'">
  25. <submit-button
  26. title="去评价"
  27. @submit="goOrder()"
  28. ></submit-button>
  29. </view>
  30. </template>
  31. <script setup lang="ts">
  32. import evaluateTabItem from "./components/evaluate-tab-item";
  33. import evaluateIssueItem from "./components/evaluate-issue-item";
  34. import evaluateEquityItem from "./components/evaluate-equity-item";
  35. import evaluateBusinessItem from "./components/evaluate-business-item";
  36. import evaluateSalesmanItem from "./components/evaluate-salesman-item";
  37. import { onLoad } from "@dcloudio/uni-app";
  38. import { reactive } from "vue";
  39. import { request } from "@/utils/network/request";
  40. import { stringToJson } from "@/utils/network/encryption";
  41. import { satisfactionEvaluation } from "@/utils/network/api";
  42. const state = reactive({
  43. type: "", //评价列表类型 1-发行产品评价 2-业务办理满意度评价 3-权益产品评价 4-业务员满意度评价(暂无UI)
  44. tabs: ["全部", "好评", "中评", "差评"],
  45. curCheckTab: "全部", //当前选择的tab
  46. dataList: [], //评价列表
  47. scoreLevel:0, //0 全部 1 好评 2 中评 3 差评
  48. serviceType:'',
  49. });
  50. onLoad((options) => {
  51. console.log("options",options)
  52. state.type = options.type;
  53. uni.setNavigationBarTitle({
  54. title: options.title,
  55. });
  56. // if (state.type === "2") {
  57. // state.tabs = [...state.tabs, "业务类型"];
  58. // }
  59. fetchList();
  60. });
  61. const goOrder=()=>{
  62. uni.switchTab({
  63. url:"/pages/order/order"
  64. })
  65. }
  66. /* tab点击 */
  67. const tabClick = (tab) => {
  68. console.log("tab",tab)
  69. state.curCheckTab = tab;
  70. if(tab=='全部'){
  71. state.scoreLevel=0
  72. }else if(tab=='好评'){
  73. state.scoreLevel=1
  74. }else if(tab=='中评'){
  75. state.scoreLevel=2
  76. }else{
  77. state.scoreLevel=3
  78. }
  79. requestData("11", { type: state.curCheckTab });
  80. };
  81. /* 根据不同条件获取数据 */
  82. const fetchList = () => {
  83. switch (state.type) {
  84. case "1": //发行产品评价
  85. state.serviceType='product';
  86. requestData("11", { type: state.curCheckTab });
  87. break;
  88. case "2": //业务办理满意度评价
  89. state.serviceType='service';
  90. requestData("22", { type: state.curCheckTab });
  91. break;
  92. case "3": //权益产品评价
  93. state.serviceType='equity';
  94. requestData("33", { type: state.curCheckTab });
  95. break;
  96. case "4": //业务员满意度评价
  97. state.serviceType='staff';
  98. requestData("44", { type: state.curCheckTab });
  99. break;
  100. default:
  101. break;
  102. }
  103. };
  104. /*请求评价列表*/
  105. const requestData = (code, data) => {
  106. const options = {
  107. type: 2,
  108. data: {
  109. "serviceType":state.serviceType,
  110. "scoreLevel":state.scoreLevel,
  111. },
  112. method: "POST",
  113. showLoading: true,
  114. };
  115. request(satisfactionEvaluation,options).then((res)=>{
  116. //若不填评价内容,根据打分规则自动填充评价内容
  117. //差评展示:默认差评 2.5分及以下
  118. //中评展示:默认中评 2.5以上4.0以下
  119. //好评展示:默认好评 4.0及4.0以上
  120. console.log("stringToJson(res.bizContent)",stringToJson(res.bizContent).data)
  121. const data=stringToJson(res.bizContent).data;
  122. if(data){
  123. for(var i=0;i<data.length;i++){
  124. if(data[i].score<=2.5){
  125. data[i].evaluate='差评';
  126. }else if(data[i].score>2.5 && data[i].score<4){
  127. data[i].evaluate='中评';
  128. }else{
  129. data[i].evaluate='好评';
  130. }
  131. data[i].insertTime = data[i].insertTime.split('T').join(' ');
  132. // data[i].pictureUrl=data[i].pictureUrl.split(',')
  133. }
  134. state.dataList = data;
  135. }else{
  136. state.dataList=[]
  137. }
  138. })
  139. //TODO 构造假数据
  140. // state.dataList = [
  141. // {
  142. // name: "张三",
  143. // time: "2021-10-01 10:10",
  144. // score: "4.5",
  145. // evaluate: "好评",
  146. // title: "产品A",
  147. // content:
  148. // "这里是评价这里是评价这里是评价这里是评价这里是评价这里是评价这里是评价这里是评价这里是评价",
  149. // },
  150. // {
  151. // name: "李四",
  152. // time: "2022-10-01 10:10",
  153. // score: "3.0",
  154. // evaluate: "中评",
  155. // title: "产品B",
  156. // content:
  157. // "这里是评价这里是评价这里是评价这里是评价这里是评价这里是评价这里是评价这里是评价这里是评价",
  158. // },
  159. // {
  160. // name: "河西笑傲",
  161. // time: "2023-10-01 10:10",
  162. // score: "2.8",
  163. // evaluate: "差评",
  164. // title: "产品C",
  165. // content:
  166. // "这里是评价这里是评价这里是评价这里是评价这里是评价这里是评价这里是评价这里是评价这里是评价",
  167. // },
  168. // ];
  169. };
  170. </script>
  171. <style>
  172. page {
  173. background-color: #eef7f7;
  174. box-sizing: border-box;
  175. }
  176. </style>
  177. <style lang="scss" scoped>
  178. .list {
  179. margin-top: 30rpx;
  180. }
  181. .btn-divider {
  182. margin-bottom: 180rpx;
  183. }
  184. .evaluate-btn {
  185. width: 100%;
  186. position: fixed;
  187. bottom: 0rpx;
  188. padding: 30rpx 40rpx;
  189. background-color: #eef7f7;
  190. text-align: center;
  191. box-sizing: border-box;
  192. }
  193. </style>