hand-over.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409
  1. <template>
  2. <div class="hc-page-box">
  3. <hc-new-card>
  4. <div class="hc-steps-view">
  5. <el-steps :active="stepsKey" align-center>
  6. <el-step title="验收通过" @click="stepClick(0)" />
  7. <el-step title="四性检测通过" @click="stepClick(1)" />
  8. <el-step title="申请移交登记" @click="stepClick(2)" />
  9. <el-step title="档案馆接收" @click="stepClick(3)" />
  10. </el-steps>
  11. </div>
  12. <div v-if="stepsKey === 0" class="hc-body-center-box">
  13. <div class="hc-content-box">
  14. <div class="mb-5 text-gray">当前项目档案未通过验收,未达到移交条件</div>
  15. <el-button type="primary" hc-btn style="width: 268px;height: 68px;font-weight: bold;" @click="toTransferInitial">去申请验收</el-button>
  16. </div>
  17. </div>
  18. <div v-if="stepsKey === 1" class="hc-body-center-box">
  19. <div v-if="!isCustodyTest" class="hc-content-box">
  20. <img :src="bgColor" alt="">
  21. <div class="mb-5 text-3xl text-black">专家验收已通过</div>
  22. <el-button type="primary" hc-btn style="width: 268px;height: 68px;font-weight: bold;" @click="custodyTesting">点击进入四性检测</el-button>
  23. </div>
  24. <div v-else class="hc-content-box">
  25. <div class="mb-5 text-gray">当前项目档案未通过四性检测,未达到移交条件</div>
  26. <el-button type="primary" hc-btn style="width: 268px;height: 68px;font-weight: bold;" @click="custodyTesting">重新检测</el-button>
  27. </div>
  28. </div>
  29. <div v-if="stepsKey === 2 && stepsKeys === 1 && !isShowMoveSubmit " class="hc-body-center-box">
  30. <div class="hc-content-box">
  31. <img :src="bgColor" alt="">
  32. <div class="mb-5 text-3xl text-black">
  33. 四性检测已通过
  34. </div>
  35. <el-button type="primary" hc-btn style="width: 268px;height: 68px;font-weight: bold;" @click="moveClick">点击进入移交登记</el-button>
  36. </div>
  37. </div>
  38. <div v-if="stepsKey === 2 && stepsKeys === 1 && isShowMoveSubmit" class="hc-content-box-submit">
  39. <moveSubmit />
  40. </div>
  41. <div v-if="stepsKey === 2 && stepsKeys === 2" class="hc-body-box is-action is-header">
  42. <div class="hc-header-box">
  43. <div class="header">
  44. <el-checkbox v-model="checked2" label="全部移交" class="size-xl" />
  45. </div>
  46. <div class="extra">
  47. <HcNewSwitch :datas="tabData" :keys="tabKey" :round="false" @change="tabChange" />
  48. </div>
  49. </div>
  50. <div class="hc-content-box hc-table-content-box">
  51. <el-scrollbar>
  52. <div class="hc-table-header text-lg font-bold">建设单位归档资料(1200卷)</div>
  53. <div class="hc-table-title text-lg font-bold">一、立项审批(238卷)</div>
  54. <div class="hc-table-ref-box">
  55. <el-table ref="tableRef" hc :data="tableData" stripe row-key="id" :border="false" style="width: 100%;" @selection-change="tableSelectionChange">
  56. <el-table-column type="selection" width="50" />
  57. <el-table-column type="index" prop="num" label="序号" width="80" />
  58. <el-table-column prop="key1" label="档号" width="180" />
  59. <el-table-column prop="key2" label="案卷题名" />
  60. <el-table-column prop="key3" label="总页数" width="120" />
  61. <el-table-column prop="key4" label="保管期限" width="120" />
  62. <el-table-column prop="key5" label="备注" />
  63. </el-table>
  64. </div>
  65. <div class="hc-table-title text-lg font-bold">二、勘察设计文件(95卷)</div>
  66. <div class="hc-table-ref-box">
  67. <el-table ref="tableRef" hc :data="tableData" stripe row-key="id" :border="false" style="width: 100%;" @selection-change="tableSelectionChange">
  68. <el-table-column type="selection" width="50" />
  69. <el-table-column type="index" prop="num" label="序号" width="80" />
  70. <el-table-column prop="key1" label="档号" width="180" />
  71. <el-table-column prop="key2" label="案卷题名" />
  72. <el-table-column prop="key3" label="总页数" width="120" />
  73. <el-table-column prop="key4" label="保管期限" width="120" />
  74. <el-table-column prop="key5" label="备注" />
  75. </el-table>
  76. </div>
  77. </el-scrollbar>
  78. </div>
  79. <div class="hc-action-box">
  80. <el-button type="primary" hc-btn @click="stepsKeysClick(3)">下一步</el-button>
  81. <el-button hc-btn>取消</el-button>
  82. </div>
  83. </div>
  84. <div v-if="stepsKey === 2 && stepsKeys === 3" class="hc-body-box is-action">
  85. <div class="hc-content-box">
  86. <div class="is-xml-data flex">
  87. <div class="mr-6 flex-1">
  88. <el-progress :text-inside="true" :stroke-width="20" :percentage="50" status="exception" />
  89. </div>
  90. <el-button type="primary" round>封装XML信息包</el-button>
  91. </div>
  92. <div class="mt-5 text-center text-dark-5">系统封装信息中........</div>
  93. </div>
  94. <div class="hc-action-box">
  95. <el-button type="primary" hc-btn @click="stepClick(3)">下一步</el-button>
  96. <el-button hc-btn>取消</el-button>
  97. </div>
  98. </div>
  99. <div v-if="stepsKey === 3" class="hc-body-center-box">
  100. <div class="hc-content-box">
  101. <img :src="seal" alt="">
  102. <div class="mt-5">
  103. <el-button type="warning" hc-btn style="width: 196px;height: 46px;font-weight: bold;background-color: #FF7D43;">审批中</el-button>
  104. </div>
  105. <div class="hc-steps-view1 mt-5">
  106. <el-steps :active="2" align-center>
  107. <el-step>
  108. <template #title>档案管理员</template>
  109. <template #description>
  110. <div>2025 04.10 17:24:59</div>
  111. <div class="sign-name">上报</div>
  112. </template>
  113. </el-step>
  114. <el-step>
  115. <template #title>部门领导</template>
  116. <template #description>
  117. <div>2025 04.10 17:24:59</div>
  118. <div class="sign-name">同意</div>
  119. </template>
  120. </el-step>
  121. <el-step>
  122. <template #title>分管领导</template>
  123. <template #description>
  124. <div>2025 04.10 17:24:59</div>
  125. <div class="sign-name">待审批</div>
  126. </template>
  127. </el-step>
  128. </el-steps>
  129. </div>
  130. </div>
  131. </div>
  132. </hc-new-card>
  133. </div>
  134. </template>
  135. <script setup>
  136. import { onMounted, ref } from 'vue'
  137. import { useRouter } from 'vue-router'
  138. import { useAppStore } from '~src/store'
  139. import bgColor from '~src/assets/hande-over/checkbox.png'
  140. import seal from '~src/assets/hande-over/seal.svg'
  141. import moveSubmit from './move-submit.vue'
  142. //变量
  143. const router = useRouter()
  144. const useAppState = useAppStore()
  145. const projectId = ref(useAppState.getProjectId)
  146. const contractId = ref(useAppState.getContractId)
  147. //渲染完成
  148. onMounted(() => {
  149. })
  150. //步骤条
  151. const stepsKey = ref(0)
  152. const stepClick = (index) => {
  153. stepsKey.value = index
  154. stepsKeys.value = 1
  155. }
  156. const stepsKeys = ref(1)
  157. const stepsKeysClick = (val) => {
  158. stepsKeys.value = val
  159. }
  160. const isCustodyTest = ref(false)
  161. //去申请验收
  162. const toTransferInitial = () => {
  163. router.push({
  164. name: 'transfer-initial',
  165. })
  166. }
  167. //去四性检测
  168. const custodyTesting = () => {
  169. router.push({
  170. name: 'custody-testing',
  171. })
  172. }
  173. //提交验收报告
  174. const checked2 = ref(false)
  175. //tab数据和相关处理
  176. const tabKey = ref('tab1')
  177. const tabData = ref([
  178. { key:'tab1', name: '建设单位归档资料' },
  179. { key:'tab2', name: '监理单位归档资料' },
  180. { key:'tab3', name: '施工单位归档资料' },
  181. { key:'tab4', name: '科研、新技术资料' },
  182. ])
  183. const tabChange = (item) => {
  184. tabKey.value = item?.key
  185. }
  186. const tableData = ref([
  187. {
  188. id: 1,
  189. key1: 'FJZB-02-123',
  190. key2: '初步设计外业验收有关文件、工程初步设计图纸、初步设计批复、初步设计审查咨询报告',
  191. key3: '293',
  192. key4: '永久',
  193. key5: '备注信息',
  194. },
  195. {
  196. id: 2,
  197. key1: 'FJZB-02-123',
  198. key2: '初步设计外业验收有关文件、工程初步设计图纸、初步设计批复、初步设计审查咨询报告',
  199. key3: '293',
  200. key4: '永久',
  201. key5: '备注信息',
  202. },
  203. {
  204. id: 2,
  205. key1: 'FJZB-02-123',
  206. key2: '初步设计外业验收有关文件、工程初步设计图纸、初步设计批复、初步设计审查咨询报告',
  207. key3: '293',
  208. key4: '永久',
  209. key5: '备注信息',
  210. },
  211. ])
  212. //多选
  213. const tableSelectionChange = (rows) => {
  214. let tableRows = rows.filter((item) => {
  215. return (item ?? '') !== ''
  216. })
  217. console.log(tableRows)
  218. }
  219. //点击进入移交登记
  220. const moveClick = () => {
  221. console.log('移交登记')
  222. isShowMoveSubmit.value = true
  223. }
  224. const isShowMoveSubmit = ref(false)
  225. const stepsData = ref([
  226. ])
  227. </script>
  228. <style lang="scss" scoped>
  229. .hc-steps-view {
  230. position: relative;
  231. padding-bottom: 14px;
  232. // margin-bottom: 24px;
  233. border-bottom: 1px solid #e9e9e9;
  234. }
  235. .hc-content-box-submit{
  236. height: calc(100% - 105px);
  237. }
  238. .hc-body-center-box {
  239. position: relative;
  240. display: flex;
  241. align-items: center;
  242. justify-content: center;
  243. height: calc(100% - 105px);
  244. .hc-content-box {
  245. position: relative;
  246. text-align: center;
  247. }
  248. .form-apply {
  249. width: 500px;
  250. }
  251. .hc-action-box {
  252. position: absolute;
  253. bottom: -90px;
  254. width: 100%;
  255. padding-top: 24px;
  256. margin-top: 24px;
  257. text-align: right;
  258. border-top: 1px solid #e9e9e9;
  259. }
  260. &.is-action {
  261. height: calc(100% - 190px);
  262. }
  263. }
  264. .hc-body-box {
  265. position: relative;
  266. height: calc(100% - 105px);
  267. .hc-header-box {
  268. position: relative;
  269. display: flex;
  270. align-items: center;
  271. margin-bottom: 24px;
  272. height: 40px;
  273. .header {
  274. position: relative;
  275. flex: 1;
  276. }
  277. .extra {
  278. position: relative;
  279. }
  280. }
  281. .hc-content-box {
  282. height: calc(100% - 105px);
  283. &.hc-table-content-box {
  284. .hc-table-header {
  285. background: #4C5BCF;
  286. color: white;
  287. text-align: center;
  288. padding: 10px 0;
  289. }
  290. .hc-table-title {
  291. background: #C9CDF1;
  292. color: white;
  293. padding: 10px;
  294. }
  295. }
  296. }
  297. .hc-action-box {
  298. position: relative;
  299. width: 100%;
  300. padding-top: 24px;
  301. margin-top: 24px;
  302. text-align: right;
  303. border-top: 1px solid #e9e9e9;
  304. }
  305. .jc-btn{
  306. width: 268px;
  307. height: 68px;
  308. }
  309. }
  310. .hc-body-box.is-action .hc-content-box {
  311. height: calc(100% - 90px);
  312. }
  313. .hc-body-box.is-header.is-action .hc-content-box {
  314. height: calc(100% - 150px);
  315. }
  316. </style>
  317. <style lang="scss">
  318. .hc-steps-view .el-steps {
  319. .el-step.is-horizontal .el-step__line {
  320. height: 4px;
  321. top: 14px;
  322. }
  323. .el-step__line-inner {
  324. border-width: 2px !important;
  325. }
  326. .el-step__icon {
  327. width: 32px;
  328. height: 32px;
  329. font-size: 18px;
  330. }
  331. .el-step__icon.is-text {
  332. border: 3px solid;
  333. }
  334. .el-step__head.is-finish {
  335. color: #1ECC95;
  336. border-color: #1ECC95;
  337. }
  338. .el-step__title.is-finish {
  339. color: #1ECC95;
  340. }
  341. }
  342. .is-xml-data {
  343. position: relative;
  344. padding-top: 140px;
  345. .el-progress-bar__outer {
  346. height: 45px !important;
  347. --el-border-color-lighter: #d9d9d9;
  348. }
  349. .el-progress-bar__inner {
  350. text-align: center;
  351. border-radius: 0;
  352. }
  353. .el-progress-bar__innerText {
  354. font-size: 16px;
  355. }
  356. .el-button {
  357. height: 45px;
  358. }
  359. .el-button.is-round {
  360. padding: 8px 25px;
  361. border-radius: 50px;
  362. }
  363. }
  364. .hc-steps-view1 .el-steps {
  365. .el-step__head.is-finish {
  366. color: #1ECC95;
  367. border-color: #1ECC95;
  368. }
  369. .el-step__title.is-finish {
  370. color: #1ECC95;
  371. }
  372. .el-step__description {
  373. white-space: nowrap;
  374. padding: 0 20px;
  375. margin-top: 5px;
  376. }
  377. .el-step {
  378. flex-basis: auto;
  379. min-width: 200px;
  380. }
  381. }
  382. </style>