Pārlūkot izejas kodu

更新项目合同、更新依赖

ZaiZai 2 gadi atpakaļ
vecāks
revīzija
a8ad14a35c

+ 1 - 1
package.json

@@ -13,7 +13,7 @@
         "dayjs": "^1.11.8",
         "echarts": "^5.4.2",
         "element-plus": "2.3.6",
-        "hc-vue3-ui": "^1.2.8",
+        "hc-vue3-ui": "^1.2.9",
         "js-base64": "^3.7.5",
         "js-cookie": "^3.0.5",
         "js-fast-way": "^0.1.0",

+ 7 - 0
src/styles/index.scss

@@ -230,3 +230,10 @@ html, body, #app {
         color: var(--el-color-primary-dark-2);
     }
 }
+
+//全屏选项卡的右上角的按钮
+.hc-tabs-simple-extra-btn {
+    position: fixed;
+    top: -4px;
+    right: 0;
+}

+ 20 - 0
src/styles/project/contract/form.scoped.scss

@@ -26,3 +26,23 @@
         }
     }
 }
+
+.hc-project-contract-form-file {
+    position: relative;
+    height: 100%;
+    overflow: hidden;
+    .hc-form-file-pdf {
+        position: relative;
+        height: 100%;
+        overflow: hidden;
+    }
+    .hc-form-file-upload {
+        position: relative;
+        height: 100%;
+        .accept-tip {
+            font-size: 14px;
+            color: #7a7979;
+            margin-bottom: 40px;
+        }
+    }
+}

+ 7 - 0
src/styles/project/contract/form.scss

@@ -0,0 +1,7 @@
+.hc-project-contract-form-file .hc-form-file-upload {
+    .hc-ui-upload-file-box,
+    .hc-ui-upload-file-box .hc-ui-upload-file-body,
+    .hc-ui-upload-file-box .hc-ui-uploader-drop.is-drop-upload {
+        height: 100%;
+    }
+}

+ 96 - 0
src/views/project/contract/components/file.vue

@@ -1,11 +1,107 @@
 <template>
+    <HcCard actionUi="text-center">
+        <div class="hc-tabs-simple-extra-btn" v-if="infoData.pdfUrl">
+            <el-button size="large" type="primary" hc-btn @click="reuploadClick">
+                <HcIcon name="upload-cloud-2"/>
+                <span>点击重新上传</span>
+            </el-button>
+        </div>
 
+        <div class="hc-project-contract-form-file">
+            <div class="hc-form-file-pdf" v-show="infoData.pdfUrl">
+                <HcPdf :src="infoData.pdfUrl"/>
+            </div>
+            <div class="hc-form-file-upload" v-show="!infoData.pdfUrl">
+                <HcUploadFile ref="HcUploadFileRef" :options="UploadFileOptions" @success="HcUploadFileSuccess" drop>
+                    <div class="accept-tip">支持的文件格式:图片(png、jpg、jpeg)、 Excel(xls、xlsx) PDF 、Word(doc、docx)</div>
+                </HcUploadFile>
+            </div>
+        </div>
+
+        <template #action>
+            <el-button size="large" type="info" hc-btn @click="goBackClick">
+                <HcIcon name="arrow-go-back"/>
+                <span v-if="isDisabled">返回上一级</span>
+                <span v-else>取消并返回</span>
+            </el-button>
+            <el-button size="large" type="primary" hc-btn @click="saveClick" v-if="!isDisabled">
+                <HcIcon name="check-double"/>
+                <span>提交保存</span>
+            </el-button>
+        </template>
+    </HcCard>
 </template>
 
 <script setup>
+import {ref, watch} from "vue";
+import {useRouter} from 'vue-router'
+import {getObjValue} from "js-fast-way";
+import {getTokenHeader} from "~src/api/request/header";
+
+const router = useRouter()
+
+//参数
+const props = defineProps({
+    datas: {
+        type: Object,
+        default: () => ({})
+    },
+    disabled: {
+        type: Boolean,
+        default: false
+    },
+})
+
+const infoData = ref(props.datas)
+const isDisabled = ref(props.disabled)
+
+//深度监听
+watch(() => [
+    props.datas,
+], ([datas]) => {
+    infoData.value = datas
+}, {deep: true})
+
+//监听
+watch(() => [
+    props.disabled,
+], ([disabled]) => {
+    isDisabled.value = disabled
+})
 
+//上传配置
+const HcUploadFileRef = ref(null)
+const UploadFileOptions = {
+    headers: getTokenHeader(), //此处设置header
+}
+
+// 文件上传成功的回调
+const HcUploadFileSuccess = (res) => {
+    const { pdfUrl } = getObjValue(res.resData)
+    infoData.value.pdfUrl = pdfUrl
+    HcUploadFileRef.value?.setModalShow(false);
+}
+
+//重新上传
+const reuploadClick = () => {
+    HcUploadFileRef.value?.selectFile()
+}
+
+//返回
+const goBackClick = () => {
+    router.back()
+}
+
+//提交保存
+const saveClick = () => {
+
+}
 </script>
 
 <style scoped lang="scss">
+@import "~src/styles/project/contract/form.scoped.scss";
+</style>
 
+<style lang="scss">
+@import "~src/styles/project/contract/form.scss";
 </style>

+ 57 - 2
src/views/project/contract/components/milestone.vue

@@ -1,11 +1,66 @@
 <template>
-
+    <HcCard actionUi="text-center">
+        333
+        <template #action>
+            <el-button size="large" type="info" hc-btn @click="goBackClick">
+                <HcIcon name="arrow-go-back"/>
+                <span v-if="isDisabled">返回上一级</span>
+                <span v-else>取消并返回</span>
+            </el-button>
+            <el-button size="large" type="primary" hc-btn @click="saveClick" v-if="!isDisabled">
+                <HcIcon name="check-double"/>
+                <span>提交保存</span>
+            </el-button>
+        </template>
+    </HcCard>
 </template>
 
 <script setup>
+import {ref, watch} from "vue";
+import {useRouter} from 'vue-router'
+
+const router = useRouter()
+
+//参数
+const props = defineProps({
+    datas: {
+        type: Object,
+        default: () => ({})
+    },
+    disabled: {
+        type: Boolean,
+        default: false
+    },
+})
+
+const infoData = ref(props.datas)
+const isDisabled = ref(props.disabled)
+
+//深度监听
+watch(() => [
+    props.datas,
+], ([datas]) => {
+    infoData.value = datas
+}, {deep: true})
 
+//监听
+watch(() => [
+    props.disabled,
+], ([disabled]) => {
+    isDisabled.value = disabled
+})
+
+//返回
+const goBackClick = () => {
+    router.back()
+}
+
+//提交保存
+const saveClick = () => {
+
+}
 </script>
 
 <style scoped lang="scss">
-
+@import "~src/styles/project/contract/form.scoped.scss";
 </style>

+ 1 - 1
src/views/project/contract/form.vue

@@ -32,7 +32,7 @@ onActivated(() => {
 })
 
 //选项卡
-const tabsKey = ref('base')
+const tabsKey = ref('file')
 const tabsData = ref([
     {icon: 'file-list-3', label: '合同基础信息', key: 'base'},
     {icon: 'file-word', label: '合同附件', key: 'file'},

+ 4 - 4
yarn.lock

@@ -816,10 +816,10 @@ has@^1.0.3:
   dependencies:
     function-bind "^1.1.1"
 
-hc-vue3-ui@^1.2.8:
-  version "1.2.8"
-  resolved "http://47.110.251.215:9000/hc-vue3-ui/-/hc-vue3-ui-1.2.8.tgz#a3f9a1c22c925b15b37ac171ac84d0170338fd40"
-  integrity sha512-1AbaHvl1F8XxfNIFu/nnT5L2ZEZE0ZI7C/tPZb2BCZ1q1NRzKZJzcF3UY8DfiwXenKVDIvg4Yv3MMGD9l0/YvA==
+hc-vue3-ui@^1.2.9:
+  version "1.2.9"
+  resolved "http://47.110.251.215:9000/hc-vue3-ui/-/hc-vue3-ui-1.2.9.tgz#eb2b982621293b4932913e8b453f525cda6c9a3f"
+  integrity sha512-2z7j7GBrmxAkVV4A1rjz3iqW5h8LhIfbIvkV954MH3y9zM1SpqyvJv72nAFpXGhuyUqmSDZDMir17zbugvcvzg==
   dependencies:
     axios "^1.4.0"
     dayjs "^1.11.8"