index.vue 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. <template>
  2. <el-card shadow="hover" class="wrapper">
  3. <div class="flex flex-center">
  4. <el-input
  5. v-model="keyword"
  6. placeholder="快速搜索"
  7. prefix-icon="Search"
  8. ></el-input>
  9. <el-button
  10. type="primary"
  11. class="ml-20"
  12. @click="$router.push('/store/detail')"
  13. >搜 索
  14. </el-button>
  15. </div>
  16. <div class="flex flex-justify-start flex-align-start content">
  17. <avue-crud
  18. :option="option"
  19. :data="data"
  20. ref="crud"
  21. v-model="form"
  22. :before-open="beforeOpen"
  23. @row-del="rowDel"
  24. @row-save="rowSave"
  25. @row-update="rowUpdate"
  26. @selection-change="selectionChange"
  27. @on-load="onLoad"
  28. >
  29. <template #menu-left="{ row }">
  30. <div class="mt-20 mb-10">
  31. <el-button
  32. type="primary"
  33. v-if="user.info.viewStage !== 1"
  34. @click="report(row)"
  35. >上报预审
  36. </el-button>
  37. <el-button type="primary" plain v-if="user.info.viewStage !== 1"
  38. >删 除
  39. </el-button>
  40. </div>
  41. </template>
  42. <template #menu-right>
  43. <div class="mt-20 mb-10">
  44. <el-button icon="Refresh" circle plain @click="onLoad" />
  45. </div>
  46. </template>
  47. <template #hasfiles="{ row }">
  48. <el-tag>
  49. {{ row.hasFiles === 1 ? '已上传' : '未上传' }}
  50. </el-tag>
  51. </template>
  52. <template #isUp="{ row }">
  53. <el-tag>
  54. {{ row.isUp === 1 ? '已上报' : '未上报' }}
  55. </el-tag>
  56. </template>
  57. </avue-crud>
  58. </div>
  59. </el-card>
  60. </template>
  61. <route>
  62. {
  63. name: '入库项目',
  64. meta: { 'showMsg' : "填写了”项目实际入库时间“的项目将不在预审管理中显示"}
  65. }
  66. </route>
  67. <script>
  68. import { useStore } from '@/store/user.js'
  69. export default {
  70. setup() {
  71. const user = useStore()
  72. return { user }
  73. },
  74. data() {
  75. return {
  76. keyword: '',
  77. form: {},
  78. data: [],
  79. selectList: [],
  80. option: {
  81. align: 'center',
  82. menuAlign: 'center',
  83. size: 'mini',
  84. viewBtn: true,
  85. editBtn: false,
  86. tip: false,
  87. selection: true,
  88. addBtn: false,
  89. refreshBtn: false,
  90. columnBtn: false,
  91. labelWidth: 140,
  92. border: true,
  93. column: [
  94. {
  95. label: '项目名称',
  96. prop: 'name'
  97. },
  98. {
  99. label: '责任单位',
  100. prop: 'unitName'
  101. },
  102. {
  103. label: '入库附件',
  104. prop: 'hasfiles'
  105. },
  106. {
  107. label: '入库时间',
  108. prop: 'createTime'
  109. },
  110. {
  111. label: '上报状态',
  112. prop: 'isUp'
  113. }
  114. ]
  115. },
  116. page: {
  117. current: 1,
  118. size: 10
  119. }
  120. }
  121. },
  122. methods: {
  123. onLoad() {
  124. this.$api.store.list(this.page).then(res => {
  125. if (res.code === 200) {
  126. this.data = res.data.records.map(ele => {
  127. const project = ele.project
  128. delete project.id
  129. delete ele.project
  130. ele.hasfile = ele.hasFile
  131. return Object.assign(ele, project)
  132. })
  133. }
  134. })
  135. },
  136. rowDel(row) {
  137. this.$confirm('确定删除选择的项目?', {
  138. confirmButtonText: '确定',
  139. cancelButtonText: '取消',
  140. type: 'warning'
  141. }).then(res => {
  142. if (res === 'confirm') {
  143. this.$api.store.remove({ ids: row.id }).then(res => {
  144. if (res.code === 200) {
  145. this.onLoad()
  146. }
  147. })
  148. }
  149. })
  150. },
  151. selectionChange(list) {
  152. this.selectList = list
  153. },
  154. beforeOpen(done, type) {
  155. if (type === 'view') {
  156. const data = this.$router.resolve({
  157. path: '/store/detail',
  158. query: { id: this.form.id, projectId: this.form.projectId }
  159. })
  160. window.open(data.href, '_blank')
  161. } else {
  162. done()
  163. }
  164. },
  165. report() {
  166. const tmps = this.selectList.filter(ele => ele.hasFiles === 0)
  167. if (tmps.length > 0) {
  168. this.$message.error('操作失败,存在未上传入库附件的项目')
  169. }
  170. }
  171. }
  172. }
  173. </script>
  174. <style lang="scss" scoped>
  175. .content {
  176. width: 100%;
  177. .left {
  178. width: 400px;
  179. height: 900px;
  180. }
  181. .center {
  182. width: 900px;
  183. }
  184. }
  185. </style>