index.vue 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <!-- 钻石搜索-单颗裸钻 -->
  2. <template>
  3. <app-view>
  4. <template #header>
  5. <el-form ref="formRef" label-width="80px" :rules="formRules">
  6. <el-form-item label="形状">
  7. <app-multiple :data-list="enums.shapeTypeList" v-model="formData.zsshapetype" checkbox />
  8. </el-form-item>
  9. <el-form-item label="颜色">
  10. <app-multiple :data-list="enums.colorTypeList" v-model="formData.zscolortype" checkbox />
  11. </el-form-item>
  12. <el-form-item label="净度">
  13. <app-multiple :data-list="enums.clarityTypeList" v-model="formData.zsclaritytype" checkbox />
  14. </el-form-item>
  15. <el-form-item label="切工">
  16. <app-multiple :data-list="enums.cutTypeList" v-model="formData.zscuttype" checkbox />
  17. </el-form-item>
  18. <el-form-item label="对称">
  19. <app-multiple :data-list="enums.symmetryTypeList" v-model="formData.zssymmetrytype" checkbox />
  20. </el-form-item>
  21. <el-form-item label="抛光">
  22. <app-multiple :data-list="enums.polishTypeList" v-model="formData.zspolishtype" checkbox />
  23. </el-form-item>
  24. <el-form-item label="荧光">
  25. <app-multiple :data-list="enums.fluorescenceTypeList" v-model="formData.zsfluorescencetype"
  26. checkbox />
  27. </el-form-item>
  28. <!-- <el-form-item label="仓库">
  29. <el-select v-model="formData.warehouseid" clearable>
  30. <el-option :label="item.warehousename" :value="item.autoid"
  31. v-for="(item, index) in warehouseList" :key="index" />
  32. </el-select>
  33. </el-form-item> -->
  34. <el-form-item label="货币">
  35. <app-multiple :data-list="enums.currencyTypeList" v-model="formData.zscurrencytype" checkbox />
  36. </el-form-item>
  37. <el-form-item label="证书">
  38. <app-multiple :data-list="enums.certTypeList" v-model="formData.zscerttype" checkbox />
  39. </el-form-item>
  40. <el-form-item label="克拉重量" prop="weight">
  41. <div class="el-form-item--col">
  42. <el-input-number placeholder="从" v-model="formData.weight1" :precision="2" :controls="false" />
  43. <span>-</span>
  44. <el-input-number placeholder="至" v-model="formData.weight2" :precision="2" :controls="false" />
  45. </div>
  46. </el-form-item>
  47. <el-form-item>
  48. <el-button type="primary" :loading="loading" @click="onSearch">搜索</el-button>
  49. <el-button :disabled="loading" @click="onReset">重置</el-button>
  50. </el-form-item>
  51. </el-form>
  52. </template>
  53. <app-table :data="dataList" v-model:columns="tableColumns" :show-toolbar="false" :loading="loading">
  54. <!-- 价格 -->
  55. <template #price="{ row }">
  56. {{ row.zscurrencytypedisplayunit + formatDecimal(row.price) }}
  57. </template>
  58. <!-- 克拉单价 -->
  59. <template #fixedprice="{ row }">
  60. {{ row.zscurrencytypedisplayunit + formatDecimal(row.fixedprice) }}
  61. </template>
  62. <!-- 操作 -->
  63. <template #operate="{ row }">
  64. <app-auth-operation type="dropdown" :menus="handleOperateButtons(row)" :options="{ selectedRow: row }"
  65. @closed="getSellOrderList" />
  66. </template>
  67. <template #footer>
  68. <app-pagination :total="total" v-model:page-size="pageSize" v-model:page-index="pageIndex"
  69. @change="getSellOrderList" />
  70. </template>
  71. </app-table>
  72. </app-view>
  73. </template>
  74. <script lang="ts" setup>
  75. import { ref } from 'vue'
  76. import { ElMessage } from 'element-plus'
  77. import type { FormInstance, FormRules } from 'element-plus'
  78. import { formatDecimal } from '@/filters'
  79. import { loginStore, favoriteStore } from '@/stores'
  80. import { useSearch } from '@/business/search'
  81. import { Category } from '@/constants/diamond'
  82. import { useComposeTable } from '@pc/components/base/table'
  83. import AppMultiple from '@pc/components/base/multiple/index.vue'
  84. import AppTable from '@pc/components/base/table/index.vue'
  85. import AppAuthOperation from '@pc/components/modules/auth-operation/index.vue'
  86. import AppPagination from '@pc/components/base/pagination/index.vue'
  87. const { loading, dataList, total, pageIndex, pageSize, formData, enums, getSellOrderList, onSearch, onReset } = useSearch(Category.Diamond)
  88. const { tableColumns } = useComposeTable<Ermcp.SellOrderSearchRsp>({ rowKey: 'wrtradeorderid', columnKey: 'listing_sellorder' })
  89. const formRef = ref<FormInstance>()
  90. const formRules: FormRules = {
  91. weight: [{
  92. validator: (rule, value, callback) => {
  93. const { weight1 = 0, weight2 = 0 } = formData.value
  94. if (weight1 && weight2) {
  95. if (weight1 > weight2) {
  96. callback(new Error('克拉重量应该从小到大'))
  97. } else {
  98. callback()
  99. }
  100. } else {
  101. if ((!weight1 || !weight2) && (weight1 || weight2)) {
  102. callback(new Error('克拉重量不能小于 0'))
  103. } else {
  104. callback()
  105. }
  106. }
  107. }
  108. }],
  109. }
  110. // 未收藏的卖委托有收藏按钮
  111. const handleOperateButtons = (row: Ermcp.SellOrderSearchRsp) => {
  112. if (favoriteStore.actions.hasFavorite(row.goodsno) || row.userid === loginStore.getters.userId) {
  113. return ['search_diamond_details']
  114. }
  115. return ['search_diamond_details', 'search_diamond_favorite']
  116. }
  117. getSellOrderList().catch((err) => ElMessage.error(err))
  118. </script>