density.vue 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  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 v-del-com:[delModalClick] :disabled="tableCheckedKeys.length <= 0" hc-btn color="#e03997">
  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. //初始变量
  58. const useAppState = useAppStore()
  59. //全局变量
  60. const projectId = ref(useAppState.getProjectId)
  61. const contractId = ref(useAppState.getContractId)
  62. //渲染完成
  63. onMounted(() => {
  64. getTableData()
  65. })
  66. //搜索表单
  67. const searchForm = ref({
  68. queryValue: null, current: 1, size: 20, total: 0,
  69. })
  70. //回车搜索
  71. const keyUpEvent = (e) => {
  72. if (e.key === 'Enter') {
  73. searchForm.value.current = 1
  74. getTableData()
  75. }
  76. }
  77. //搜索
  78. const searchClick = () => {
  79. searchForm.value.current = 1
  80. getTableData()
  81. }
  82. //分页被点击
  83. const pageChange = ({ current, size }) => {
  84. searchForm.value.current = current
  85. searchForm.value.size = size
  86. getTableData()
  87. }
  88. //表格数据
  89. const tableRef = ref(null)
  90. const tableColumn = ref([
  91. { key: 'temperature', name: '温度' },
  92. { key: 'waterDensity', name: '密度' },
  93. ])
  94. //获取数据
  95. const tableLoading = ref(false)
  96. const tableData = ref([])
  97. const getTableData = async () => {
  98. tableLoading.value = true
  99. const { error, code, data } = await dataApi.queryPage({
  100. ...searchForm.value,
  101. projectId: projectId.value,
  102. contractId: contractId.value,
  103. })
  104. //处理数据
  105. tableLoading.value = false
  106. if (!error && code === 200) {
  107. tableData.value = getArrValue(data['records'])
  108. searchForm.value.total = data.total || 0
  109. } else {
  110. tableData.value = []
  111. searchForm.value.total = 0
  112. }
  113. }
  114. //多选
  115. const tableCheckedKeys = ref([])
  116. const tableSelection = (rows) => {
  117. tableCheckedKeys.value = rows
  118. }
  119. //新增/编辑 材料进场
  120. const addEditFormModal = ref(false)
  121. const addFormModalClick = () => {
  122. addEditFormModel.value = {}
  123. addEditFormModal.value = true
  124. }
  125. const editFormModalClick = () => {
  126. const keys = tableCheckedKeys.value
  127. if (keys.length === 1) {
  128. addEditFormModel.value = keys[0]
  129. addEditFormModal.value = true
  130. } else if (keys.length > 1) {
  131. window?.$message?.warning('只能选择一条数据编辑')
  132. }
  133. }
  134. const addEditFormModalClose = () => {
  135. addEditFormModal.value = false
  136. }
  137. //新增/编辑 表单
  138. const addEditFormRef = ref(null)
  139. const addEditFormModel = ref({})
  140. const addEditFormRules = {
  141. temperature: {
  142. required: true,
  143. trigger: 'blur',
  144. message: '请输入温度',
  145. },
  146. waterDensity: {
  147. required: true,
  148. trigger: 'blur',
  149. message: '请输入密度',
  150. },
  151. }
  152. //新增/编辑 保存
  153. const addEditFormLoading = ref(false)
  154. const addEditFormClick = async () => {
  155. const validate = await formValidate(addEditFormRef.value)
  156. if (validate) {
  157. addEditFormLoading.value = true
  158. //发起请求
  159. const { error, code, msg } = await dataApi.submitForm({
  160. ...addEditFormModel.value,
  161. projectId: projectId.value,
  162. contractId: contractId.value,
  163. })
  164. //处理数据
  165. if (!error && code === 200) {
  166. window?.$message?.success('操作成功')
  167. addEditFormModal.value = false
  168. addEditFormLoading.value = false
  169. await getTableData()
  170. } else {
  171. window?.$message?.error(msg)
  172. }
  173. }
  174. }
  175. //删除
  176. const delModalClick = async (_, resolve) => {
  177. await tableRemoveData()
  178. resolve()
  179. }
  180. //批量删除
  181. const tableRemoveData = async () => {
  182. const rows = tableCheckedKeys.value
  183. if (rows.length > 0) {
  184. const ids = arrToId(rows)
  185. //删除请求
  186. const { error, code, msg } = await dataApi.removeData({
  187. projectId: projectId.value,
  188. contractId: contractId.value,
  189. ids: ids,
  190. })
  191. //处理数据
  192. if (!error && code === 200) {
  193. window?.$message?.success('操作成功')
  194. searchClick()
  195. } else {
  196. window?.$message?.error(msg)
  197. }
  198. }
  199. }
  200. </script>
  201. <style lang="scss" scoped>
  202. </style>