index.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. <template>
  2. <van-dropdown-menu class="titleMenu" swipe-threshold="3">
  3. <!-- 用户 -->
  4. <!-- <van-dropdown-item v-if="isShowAdmin()" :title="adminTypeTitle" v-model="adminType" :options="adminList"
  5. @change="adminTypeChange" /> -->
  6. <!-- 设备类型 -->
  7. <van-dropdown-item :title="machineTypeTitle" v-model="machineType" :options="machineList"
  8. @change="machineTypeChange" />
  9. <!-- 账号类型 -->
  10. <van-dropdown-item v-if="isShowAdminAndCompany()" :title="foreignTypeTitle" v-model="foreignType"
  11. :options="foreignList" @change="foreignTypeChange" />
  12. <!-- 公司平台 -->
  13. <van-dropdown-item v-if="isShowCompany()" :title="companyTypeTitle" v-model="companyType" :options="companyList"
  14. @change="companyTypeChange" />
  15. <!-- 支付方式 -->
  16. <van-dropdown-item :title="paymentTypeTitle" v-model="paymentType" :options="payList" @change="paymentTypeChange" />
  17. <!-- 设备筛选 -->
  18. <van-dropdown-item v-if="isShowDevice()" :title="deviceTypeTitle" v-model="deviceType" :options="deviceList"
  19. @change="deviceTypeChange" />
  20. <!-- 订单状态 -->
  21. <van-dropdown-item v-if="!isHome" :title="orderStatusTitle" v-model="orderStatus" :options="orderStatusList"
  22. @change="orderStatusChange" />
  23. </van-dropdown-menu>
  24. </template>
  25. <script>
  26. import { onMounted, toRefs, reactive, ref } from "vue";
  27. import { getAdminList, getEquipmentList } from '@/service/typeSelectList';
  28. import { getLoginUser } from '@/common/js/utils';
  29. import { useI18n } from 'vue-i18n';
  30. export default {
  31. name: "typeSelectList",
  32. components: {},
  33. props: {
  34. // 是否首页
  35. isHome: {
  36. type: Boolean,
  37. default: false,
  38. },
  39. },
  40. setup(props, { emit }) {
  41. const user = getLoginUser(); // 获取登录用户
  42. const { t } = useI18n();
  43. // 支付方式
  44. const paymentType = ref(null);
  45. // 支付方式标题
  46. const paymentTypeTitle = ref(t('typeSelectList.paymentMethod'));
  47. // 支付方式列表
  48. const payList = ref(user.ifForeign === '0' ? [
  49. { text: t('typeSelectList.whole'), value: '' },
  50. { text: t('typeSelectList.mainSweepOfAlipay'), value: 'ALIPAY_NATIVE' },
  51. { text: t('typeSelectList.weChatScanning'), value: 'WEIXIN_NATIVE' },
  52. { text: t('typeSelectList.antiScanningOfAlipay'), value: 'ALIPAY_CARD' },
  53. { text: t('typeSelectList.weChatBackScanning'), value: 'WEIXIN_CARD' }
  54. ] : [
  55. { text: t('typeSelectList.whole'), value: '' },
  56. { text: t('typeSelectList.noPaymentRequired'), value: 0 },
  57. { text: t('typeSelectList.coin'), value: 1 },
  58. { text: t('typeSelectList.notes'), value: 2 },
  59. { text: t('typeSelectList.coinsNotes'), value: 3 },
  60. { text: t('typeSelectList.creditCard'), value: 4 },
  61. { text: t('typeSelectList.electronicPayment'), value: 5 },
  62. ]);
  63. // 选择支付方式
  64. const paymentTypeChange = (value) => {
  65. paymentTypeTitle.value = payList.value.find(payList => payList.value === value).text;
  66. searchParams.payType = value;
  67. outputDate();
  68. }
  69. // 公司平台
  70. const companyType = ref(null);
  71. // 公司平台标题
  72. const companyTypeTitle = ref(t('typeSelectList.companies'));
  73. // 公司平台列表
  74. const companyList = [
  75. { text: t('typeSelectList.whole'), value: '' },
  76. { text: t('typeSelectList.sz'), value: '0' },
  77. { text: t('typeSelectList.sc'), value: '1' },
  78. ];
  79. // 选择公司平台
  80. const companyTypeChange = (value) => {
  81. companyTypeTitle.value = companyList.find(companyList => companyList.value === value).text;
  82. searchParams.companyType = value;
  83. outputDate();
  84. }
  85. // 账号类型
  86. const foreignType = ref(null);
  87. // 账号类型标题
  88. const foreignTypeTitle = ref(t('typeSelectList.ifForeignes'));
  89. // 账号地区列表
  90. const foreignList = [
  91. { text: t('typeSelectList.mainland'), value: '0' },
  92. { text: t('typeSelectList.overseas'), value: '1' },
  93. ];
  94. // 选择账号类型
  95. const foreignTypeChange = (value) => {
  96. foreignTypeTitle.value = foreignList.find(foreignList => foreignList.value === value).text;
  97. if (value == "0") {
  98. payList.value = [
  99. { text: t('typeSelectList.whole'), value: '' },
  100. { text: t('typeSelectList.mainSweepOfAlipay'), value: 'ALIPAY_NATIVE' },
  101. { text: t('typeSelectList.weChatScanning'), value: 'WEIXIN_NATIVE' },
  102. { text: t('typeSelectList.antiScanningOfAlipay'), value: 'ALIPAY_CARD' },
  103. { text: t('typeSelectList.weChatBackScanning'), value: 'WEIXIN_CARD' }
  104. ];
  105. } else {
  106. payList.value = [
  107. { text: t('typeSelectList.whole'), value: '' },
  108. { text: t('typeSelectList.noPaymentRequired'), value: 0 },
  109. { text: t('typeSelectList.coin'), value: 1 },
  110. { text: t('typeSelectList.notes'), value: 2 },
  111. { text: t('typeSelectList.coinsNotes'), value: 3 },
  112. { text: t('typeSelectList.creditCard'), value: 4 },
  113. { text: t('typeSelectList.electronicPayment'), value: 5 },
  114. ];
  115. }
  116. searchParams.ifForeign = value;
  117. outputDate();
  118. }
  119. // 设备类型
  120. const machineType = ref(null);
  121. // 设备类型标题
  122. const machineTypeTitle = ref(t('typeSelectList.machines'));
  123. // 设备类型列表
  124. const machineList = [
  125. { text: t('typeSelectList.whole'), value: '' },
  126. { text: t('typeSelectList.MG'), value: '0' },
  127. { text: t('typeSelectList.POP'), value: '1' },
  128. ];
  129. // 选择设备类型
  130. const machineTypeChange = (value) => {
  131. machineTypeTitle.value = machineList.find(machineList => machineList.value === value).text;
  132. searchParams.machineType = value;
  133. outputDate();
  134. }
  135. // 设备筛选
  136. const deviceType = ref(null);
  137. // 设备筛选标题
  138. const deviceTypeTitle = ref(t('typeSelectList.allDevices'));
  139. // 设备列表
  140. const deviceList = ref([]);
  141. // 获取设备列表
  142. const getDeviceListFun = async () => {
  143. const { data } = await getEquipmentList({ adminId: user.id });
  144. if (data.code === '00000') {
  145. deviceList.value = data.data.map(item => {
  146. return { text: item.name != null ? item.name : item.clientId, value: item.id }
  147. });
  148. deviceList.value.unshift({ text: t('typeSelectList.allDevices'), value: '' });
  149. }
  150. }
  151. // 设备选择
  152. const deviceTypeChange = (value) => {
  153. deviceTypeTitle.value = deviceList.value.find(deviceList => deviceList.value === value).text;
  154. if (deviceTypeTitle.value != t('typeSelectList.allDevices')) {
  155. searchParams.equipmentId = value;
  156. } else {
  157. searchParams.equipmentId = '';
  158. }
  159. outputDate();
  160. }
  161. // 订单状态
  162. const orderStatus = ref(null);
  163. // 订单状态标题
  164. const orderStatusTitle = ref(t('typeSelectList.orderStatus'));
  165. // 订单状态列表
  166. const orderStatusList = [
  167. { text: t('typeSelectList.whole'), value: '' },
  168. { text: t('typeSelectList.unpaid'), value: 0 },
  169. { text: t('typeSelectList.paid'), value: 1 },
  170. { text: t('typeSelectList.refunding'), value: 2 },
  171. { text: t('typeSelectList.refunded'), value: 3 },
  172. ]
  173. // 选择订单状态
  174. const orderStatusChange = (value) => {
  175. orderStatusTitle.value = orderStatusList.find(orderStatusList => orderStatusList.value === value).text;
  176. searchParams.status = value;
  177. outputDate();
  178. }
  179. // 商户筛选
  180. const adminType = ref(null);
  181. // 商户筛选标题
  182. const adminTypeTitle = ref(t('typeSelectList.thisMerchant'));
  183. // 商户列表
  184. const adminList = ref([]);
  185. // 获取商户列表
  186. const getAdminListFun = async () => {
  187. const { data } = await getAdminList({ adminId: user.id });
  188. if (data.code === '00000') {
  189. adminList.value = data.data.map(item => {
  190. return { text: item.username, value: item.id }
  191. });
  192. adminList.value.unshift({ text: t('typeSelectList.allSuboUsers'), value: 'all' });
  193. adminList.value.unshift({ text: t('typeSelectList.thisMerchant'), value: 'this' });
  194. }
  195. }
  196. // 选择商户
  197. const adminTypeChange = (value) => {
  198. adminTypeTitle.value = adminList.value.find(adminList => adminList.value === value).text;
  199. searchParams.adminType = (adminTypeTitle.value === t('typeSelectList.allSuboUsers')) ? 'all' : '';
  200. searchParams.userName = (adminTypeTitle.value === t('typeSelectList.allSuboUsers')) ? 'all' : (adminTypeTitle.value === t('typeSelectList.thisMerchant')) ? user.username : adminTypeTitle.value;
  201. outputDate();
  202. }
  203. // 筛选参数
  204. let searchParams = reactive({
  205. userName: user.username,
  206. adminType: '',
  207. clientId: '',
  208. payType: '',
  209. productNo: '',
  210. equipmentId: '',
  211. companyType: '',
  212. machineType: '',
  213. ifForeign: '',
  214. });
  215. // 是否商户
  216. const isShowAdmin = () => { return (user && user.type === 1); }
  217. // 是否管理员
  218. const isShowCompany = () => { return (user && user.type === 0); }
  219. // 是否管理员和公司人员
  220. const isShowAdminAndCompany = () => { return (user && user.type < 2); }
  221. // 是否商户及子账户
  222. const isShowDevice = () => { return (user && (user.type === 2 || user.type === 3)); }
  223. // 返回参数
  224. const outputDate = () => { emit('upselectdata', searchParams); }
  225. onMounted(() => {
  226. getAdminListFun();
  227. getDeviceListFun();
  228. });
  229. return {
  230. ...toRefs(searchParams),
  231. // 是否商户
  232. isShowAdmin,
  233. // 是否管理员
  234. isShowCompany,
  235. // 是否商户及子账户
  236. isShowDevice,
  237. // 是否管理员和公司人员
  238. isShowAdminAndCompany,
  239. // 商家选择
  240. adminList,
  241. adminType,
  242. adminTypeTitle,
  243. adminTypeChange,
  244. // 订单状态
  245. orderStatusList,
  246. orderStatus,
  247. orderStatusTitle,
  248. orderStatusChange,
  249. // 设备选择
  250. deviceList,
  251. deviceType,
  252. deviceTypeTitle,
  253. deviceTypeChange,
  254. // 设备类型选择
  255. machineList,
  256. machineType,
  257. machineTypeTitle,
  258. machineTypeChange,
  259. // 账号类型选择
  260. foreignList,
  261. foreignType,
  262. foreignTypeTitle,
  263. foreignTypeChange,
  264. // 公司平台选择
  265. companyList,
  266. companyType,
  267. companyTypeTitle,
  268. companyTypeChange,
  269. // 支付方式选择
  270. payList,
  271. paymentType,
  272. paymentTypeTitle,
  273. paymentTypeChange,
  274. };
  275. },
  276. };
  277. </script>
  278. <style lang="less" scoped>
  279. @import "@/common/style/common.less";
  280. </style>