density.vue 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. <template>
  2. <div class="hc-page-box">
  3. <HcNewCard>
  4. <template #header>
  5. <HcTooltip keys="tentative_parameter_density_add">
  6. <el-button hc-btn type="primary" @click="addFormModalClick">
  7. <HcIcon name="add-circle" />
  8. <span>新增</span>
  9. </el-button>
  10. </HcTooltip>
  11. <HcTooltip keys="tentative_parameter_density_edit">
  12. <el-button :disabled="tableCheckedKeys.length <= 0" hc-btn type="primary" color="#12C060" style="color: white;" @click="editFormModalClick">
  13. <HcIcon name="edit" />
  14. <span>编辑</span>
  15. </el-button>
  16. </HcTooltip>
  17. <HcTooltip keys="tentative_parameter_density_del">
  18. <el-button :disabled="tableCheckedKeys.length <= 0" hc-btn color="#e03997" @click="delModalClick">
  19. <HcIcon name="delete-bin-2" />
  20. <span>删除</span>
  21. </el-button>
  22. </HcTooltip>
  23. </template>
  24. <HcTable
  25. ref="tableRef" :column="tableColumn" :datas="tableData" :loading="tableLoading"
  26. is-new :index-style="{ width: 60 }" is-check :check-style="{ width: 29 }"
  27. @selection-change="tableSelection"
  28. />
  29. <template #action>
  30. <HcPages :pages="searchForm" @change="pageChange" />
  31. </template>
  32. </HcNewCard>
  33. <!-- 新增/编辑 -->
  34. <hc-new-dialog
  35. v-model="addEditFormModal" :loading="addEditFormLoading" :title="`${addEditFormModel.id ? '编辑' : '新增'}温度信息`"
  36. widths="30rem" @close="addEditFormModalClose" @save="addEditFormClick"
  37. >
  38. <el-form
  39. ref="addEditFormRef" :model="addEditFormModel" :rules="addEditFormRules" label-width="auto"
  40. size="large"
  41. >
  42. <el-form-item label="温度" prop="temperature">
  43. <el-input v-model="addEditFormModel.temperature" />
  44. </el-form-item>
  45. <el-form-item label="水密度" prop="waterDensity">
  46. <el-input v-model="addEditFormModel.waterDensity" />
  47. </el-form-item>
  48. </el-form>
  49. </hc-new-dialog>
  50. </div>
  51. </template>
  52. <script setup>
  53. import { onMounted, ref } from 'vue'
  54. import { useAppStore } from '~src/store'
  55. import dataApi from '~api/tentative/parameter/density'
  56. import { arrToId, formValidate, getArrValue } from 'js-fast-way'
  57. import { delMessageV2 } from '~com/message/index.js'
  58. //初始变量
  59. const useAppState = useAppStore()
  60. //全局变量
  61. const projectId = ref(useAppState.getProjectId)
  62. const contractId = ref(useAppState.getContractId)
  63. //渲染完成
  64. onMounted(() => {
  65. getTableData()
  66. })
  67. //搜索表单
  68. const searchForm = ref({
  69. queryValue: null, current: 1, size: 20, total: 0,
  70. })
  71. //回车搜索
  72. const keyUpEvent = (e) => {
  73. if (e.key === 'Enter') {
  74. searchForm.value.current = 1
  75. getTableData()
  76. }
  77. }
  78. //搜索
  79. const searchClick = () => {
  80. searchForm.value.current = 1
  81. getTableData()
  82. }
  83. //分页被点击
  84. const pageChange = ({ current, size }) => {
  85. searchForm.value.current = current
  86. searchForm.value.size = size
  87. getTableData()
  88. }
  89. //表格数据
  90. const tableRef = ref(null)
  91. const tableColumn = ref([
  92. { key: 'temperature', name: '温度' },
  93. { key: 'waterDensity', name: '密度' },
  94. ])
  95. //获取数据
  96. const tableLoading = ref(false)
  97. const tableData = ref([])
  98. const getTableData = async () => {
  99. tableLoading.value = true
  100. const { error, code, data } = await dataApi.queryPage({
  101. ...searchForm.value,
  102. projectId: projectId.value,
  103. contractId: contractId.value,
  104. })
  105. //处理数据
  106. tableLoading.value = false
  107. if (!error && code === 200) {
  108. tableData.value = getArrValue(data['records'])
  109. searchForm.value.total = data.total || 0
  110. } else {
  111. tableData.value = []
  112. searchForm.value.total = 0
  113. }
  114. }
  115. //多选
  116. const tableCheckedKeys = ref([])
  117. const tableSelection = (rows) => {
  118. tableCheckedKeys.value = rows
  119. }
  120. //新增/编辑 材料进场
  121. const addEditFormModal = ref(false)
  122. const addFormModalClick = () => {
  123. addEditFormModel.value = {}
  124. addEditFormModal.value = true
  125. }
  126. const editFormModalClick = () => {
  127. const keys = tableCheckedKeys.value
  128. if (keys.length === 1) {
  129. addEditFormModel.value = keys[0]
  130. addEditFormModal.value = true
  131. } else if (keys.length > 1) {
  132. window?.$message?.warning('只能选择一条数据编辑')
  133. }
  134. }
  135. const addEditFormModalClose = () => {
  136. addEditFormModal.value = false
  137. }
  138. //新增/编辑 表单
  139. const addEditFormRef = ref(null)
  140. const addEditFormModel = ref({})
  141. const addEditFormRules = {
  142. temperature: {
  143. required: true,
  144. trigger: 'blur',
  145. message: '请输入温度',
  146. },
  147. waterDensity: {
  148. required: true,
  149. trigger: 'blur',
  150. message: '请输入密度',
  151. },
  152. }
  153. //新增/编辑 保存
  154. const addEditFormLoading = ref(false)
  155. const addEditFormClick = async () => {
  156. const validate = await formValidate(addEditFormRef.value)
  157. if (validate) {
  158. addEditFormLoading.value = true
  159. //发起请求
  160. const { error, code } = await dataApi.submitForm({
  161. ...addEditFormModel.value,
  162. projectId: projectId.value,
  163. contractId: contractId.value,
  164. })
  165. //处理数据
  166. if (!error && code === 200) {
  167. window?.$message?.success('操作成功')
  168. addEditFormModal.value = false
  169. addEditFormLoading.value = false
  170. await getTableData()
  171. }
  172. }
  173. }
  174. //删除
  175. const delModalClick = () => {
  176. delMessageV2(async (action, instance, done) => {
  177. if (action === 'confirm') {
  178. instance.confirmButtonLoading = true
  179. await tableRemoveData()
  180. instance.confirmButtonLoading = false
  181. done()
  182. } else {
  183. done()
  184. }
  185. })
  186. }
  187. //批量删除
  188. const tableRemoveData = async () => {
  189. const rows = tableCheckedKeys.value
  190. if (rows.length > 0) {
  191. const ids = arrToId(rows)
  192. //删除请求
  193. const { error, code } = await dataApi.removeData({
  194. projectId: projectId.value,
  195. contractId: contractId.value,
  196. ids: ids,
  197. })
  198. //处理数据
  199. if (!error && code === 200) {
  200. window?.$message?.success('操作成功')
  201. searchClick()
  202. }
  203. }
  204. }
  205. </script>
  206. <style lang="scss" scoped>
  207. </style>