approach.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318
  1. <template>
  2. <div class="hc-page-box">
  3. <HcCard>
  4. <template #header>
  5. <HcTooltip keys="tentative_material_approach_add">
  6. <el-button type="primary" hc-btn @click="addFormModalClick">
  7. <HcIcon name="add-circle"/>
  8. <span>新增</span>
  9. </el-button>
  10. </HcTooltip>
  11. <HcTooltip keys="tentative_material_approach_edit">
  12. <el-button hc-btn @click="editFormModalClick">
  13. <HcIcon name="edit"/>
  14. <span>编辑</span>
  15. </el-button>
  16. </HcTooltip>
  17. <HcTooltip keys="tentative_material_approach_copy">
  18. <el-button hc-btn @click="copyTableModalClick">
  19. <HcIcon name="file-copy-2"/>
  20. <span>复制</span>
  21. </el-button>
  22. </HcTooltip>
  23. <HcTooltip keys="tentative_material_approach_del">
  24. <el-button hc-btn @click="delModalClick">
  25. <HcIcon name="delete-bin-2"/>
  26. <span>删除</span>
  27. </el-button>
  28. </HcTooltip>
  29. <HcTooltip keys="tentative_material_approach_printer">
  30. <el-button hc-btn>
  31. <HcIcon name="printer"/>
  32. <span>打印</span>
  33. </el-button>
  34. </HcTooltip>
  35. <HcTooltip keys="tentative_material_approach_import">
  36. <el-button hc-btn>
  37. <HcIcon name="folder-upload"/>
  38. <span>导入</span>
  39. </el-button>
  40. </HcTooltip>
  41. </template>
  42. <template #search>
  43. <div class="w-40">
  44. <el-select v-model="searchForm.type" placeholder="请选择材料类型" clearable>
  45. <el-option v-for="item in typeData" :key="item.value" :label="item['label']" :value="item['value']"/>
  46. </el-select>
  47. </div>
  48. <div class="w-64 ml-2">
  49. <HcDatePicker :dates="betweenTime" clearable @change="betweenTimeUpdate"/>
  50. </div>
  51. <div class="w-72 ml-2">
  52. <el-input v-model="searchForm.queryValue" placeholder="请输入名称、规格、材料编号进行查询" clearable @keyup="keyUpEvent"/>
  53. </div>
  54. <div class="ml-2">
  55. <el-button type="primary" @click="searchClick">
  56. <HcIcon name="search-2"/>
  57. <span>搜索</span>
  58. </el-button>
  59. </div>
  60. </template>
  61. <HcTable ref="tableRef" :column="tableColumn" :datas="tableData" :loading="tableLoading" isCheck @selection-change="tableSelection">
  62. <template #action="{row}">
  63. <HcTooltip keys="tentative_material_approach_annex">
  64. <el-button type="primary" size="small" plain>附件</el-button>
  65. </HcTooltip>
  66. <HcTooltip keys="tentative_material_approach_sampling">
  67. <el-button type="primary" size="small" plain>取样记录</el-button>
  68. </HcTooltip>
  69. </template>
  70. </HcTable>
  71. <template #action>
  72. <HcPages :pages="searchForm" @change="pageChange"/>
  73. </template>
  74. </HcCard>
  75. <!--新增/编辑-->
  76. <HcDialog :show="addEditFormModal" title="新增/编辑 材料进场" widths="45rem" :loading="addEditFormLoading" @close="addEditFormModalClose" @save="addEditFormClick">
  77. <el-form ref="addEditFormRef" :model="addEditFormModel" :rules="addEditFormRules" label-width="auto" size="large">
  78. <div class="hc-form-item">
  79. <el-form-item label="材料类型">
  80. <el-select v-model="addEditFormModel.key1" block>
  81. <el-option v-for="item in typeData" :label="item.label" :value="item.value"/>
  82. </el-select>
  83. </el-form-item>
  84. <el-form-item label="材料单价" prop="key2">
  85. <el-input v-model="addEditFormModel.key2"/>
  86. </el-form-item>
  87. </div>
  88. <div class="hc-form-item">
  89. <el-form-item label="材料名称" prop="key3">
  90. <el-input v-model="addEditFormModel.key3"/>
  91. </el-form-item>
  92. <el-form-item label="材料数量" prop="key4">
  93. <el-input v-model="addEditFormModel.key4"/>
  94. </el-form-item>
  95. </div>
  96. <div class="hc-form-item">
  97. <el-form-item label="规格型号" prop="key5">
  98. <el-input v-model="addEditFormModel.key5"/>
  99. </el-form-item>
  100. <el-form-item label="计算单位" prop="key6">
  101. <el-input v-model="addEditFormModel.key6"/>
  102. </el-form-item>
  103. </div>
  104. <div class="hc-form-item">
  105. <el-form-item label="材料编号" prop="key7">
  106. <el-input v-model="addEditFormModel.key7"/>
  107. </el-form-item>
  108. <el-form-item label="生产批号" prop="key8">
  109. <el-input v-model="addEditFormModel.key8"/>
  110. </el-form-item>
  111. </div>
  112. <div class="hc-form-item">
  113. <el-form-item label="进场日期" prop="key9">
  114. <el-date-picker type="date" v-model="addEditFormModel.key9" class="block" value-format="YYYY-MM-DD" :clearable="false"/>
  115. </el-form-item>
  116. <el-form-item label="拟用部位" prop="key10">
  117. <el-input v-model="addEditFormModel.key10"/>
  118. </el-form-item>
  119. </div>
  120. <div class="hc-form-item">
  121. <el-form-item label="供应商单位" prop="key11">
  122. <el-input v-model="addEditFormModel.key11"/>
  123. </el-form-item>
  124. <el-form-item label="生产地/厂家" prop="key12">
  125. <el-input v-model="addEditFormModel.key12"/>
  126. </el-form-item>
  127. </div>
  128. <el-form-item label="生产合格证" prop="key13">
  129. <div class="form-item-dashed hover">上传文件(待定,看后端接口后,再定)</div>
  130. </el-form-item>
  131. <el-form-item label="厂家质检报告" prop="key13">
  132. <div class="form-item-dashed hover">上传文件(待定,看后端接口后,再定)</div>
  133. </el-form-item>
  134. <el-form-item label="其他附件" prop="key13">
  135. <div class="form-item-dashed hover">上传文件(待定,看后端接口后,再定)</div>
  136. </el-form-item>
  137. </el-form>
  138. </HcDialog>
  139. <!--复制材料登记信息-->
  140. <HcDialog :show="copyTableModal" title="复制材料登记信息" widths="60rem" isTable :loading="copyTableLoading" @close="copyTableModalClose" @save="copyTableClick">
  141. <HcTable :column="copyTableColumn" :datas="copyTableData">
  142. <template #key1="{row}">
  143. <el-input v-model="row.key1" placeholder="请输入材料编号"/>
  144. </template>
  145. <template #action="{row}">
  146. <el-button type="danger" size="small" plain>删除</el-button>
  147. </template>
  148. </HcTable>
  149. </HcDialog>
  150. </div>
  151. </template>
  152. <script setup>
  153. import {ref,watch,onMounted} from "vue";
  154. import {useRouter, useRoute} from 'vue-router'
  155. import {useAppStore} from "~src/store";
  156. //初始变量
  157. const router = useRouter()
  158. const useRoutes = useRoute()
  159. const useAppState = useAppStore()
  160. //const {getObjValue, getArrValue} = isType()
  161. //全局变量
  162. const projectId = ref(useAppState.getProjectId);
  163. const contractId = ref(useAppState.getContractId);
  164. const typeData = ref([
  165. {label: '水泥', value: '1'}
  166. ])
  167. //搜索表单
  168. const searchForm = ref({type: null, betweenTime: null, queryValue: null, current: 1, size: 20, total: 0})
  169. //日期时间被选择
  170. const betweenTime = ref(null)
  171. const betweenTimeUpdate = ({arr,query}) => {
  172. betweenTime.value = arr
  173. searchForm.value.betweenTime = query
  174. }
  175. //回车搜索
  176. const keyUpEvent = (e) => {
  177. if (e.key === "Enter") {
  178. searchForm.value.current = 1;
  179. getTableData()
  180. }
  181. }
  182. //搜索
  183. const searchClick = () => {
  184. searchForm.value.current = 1;
  185. getTableData()
  186. }
  187. //分页被点击
  188. const pageChange = ({current, size}) => {
  189. searchForm.value.current = current
  190. searchForm.value.size = size
  191. getTableData()
  192. }
  193. //表格数据
  194. const tableRef = ref(null)
  195. const tableColumn = ref([
  196. {key:'key1', name: '材料编号'},
  197. {key:'key2', name: '进场日期'},
  198. {key:'key3', name: '材料名称'},
  199. {key:'key4', name: '材料类型'},
  200. {key:'key5', name: '规格型号'},
  201. {key:'key6', name: '供应商单位'},
  202. {key:'key7', name: '材料单价'},
  203. {key:'key8', name: '材料数量'},
  204. {key:'key9', name: '计算单位'},
  205. {key:'key10', name: '生产批号'},
  206. {key:'key11', name: '生产地/厂家'},
  207. {key:'key12', name: '拟用部位'},
  208. {key:'key13', name: '记录人'},
  209. {key:'action', name: '操作', width: 200},
  210. ])
  211. //获取数据
  212. const tableLoading = ref(false)
  213. const tableData = ref([
  214. {}
  215. ])
  216. const getTableData = async () => {
  217. }
  218. //多选
  219. const tableCheckedKeys = ref([]);
  220. const tableSelection = (rows) => {
  221. tableCheckedKeys.value = rows.filter((item) => {
  222. return (item??'') !== '';
  223. })
  224. }
  225. //新增/编辑 材料进场
  226. const addEditFormModal = ref(false)
  227. const addFormModalClick = () => {
  228. addEditFormModal.value = true
  229. }
  230. const editFormModalClick = () => {
  231. addEditFormModal.value = true
  232. }
  233. const addEditFormModalClose = () => {
  234. addEditFormModal.value = false
  235. }
  236. //新增/编辑 表单
  237. const addEditFormRef = ref(null)
  238. const addEditFormModel = ref({})
  239. const addEditFormRules = {
  240. key2: {
  241. required: true,
  242. trigger: 'blur',
  243. message: "请输入"
  244. },
  245. }
  246. //新增/编辑 保存
  247. const addEditFormLoading = ref(false)
  248. const addEditFormClick = () => {
  249. }
  250. //复制
  251. const copyTableModal = ref(false)
  252. const copyTableModalClick = () => {
  253. copyTableModal.value = true
  254. }
  255. //复制表格
  256. const copyTableColumn = ref([
  257. {key:'key3', name: '材料名称'},
  258. {key:'key1', name: '材料编号'},
  259. {key:'action', name: '操作', width: 100},
  260. ])
  261. const copyTableData = ref([
  262. {key3: '名称', key1: '编号...'},
  263. {key3: '名称1', key1: '编号1...'},
  264. ])
  265. const copyTableModalClose = () => {
  266. copyTableModal.value = false
  267. }
  268. //复制 保存
  269. const copyTableLoading = ref(false)
  270. const copyTableClick = () => {
  271. copyTableModal.value = false
  272. }
  273. //删除
  274. const delModalClick = () => {
  275. window?.$messageBox?.alert('请谨慎考虑后,确认是否需要删除?', '删除提醒', {
  276. showCancelButton: true,
  277. confirmButtonText: '确认删除',
  278. cancelButtonText: '取消',
  279. type: 'warning',
  280. callback: (action) => {
  281. if (action === 'confirm') {
  282. //removeContractTreeNode()
  283. }
  284. }
  285. })
  286. }
  287. </script>
  288. <style lang="scss" scoped>
  289. </style>