style:登记薄模块功跳转材料信息模
Showing
13 changed files
with
243 additions
and
493 deletions
| 1 | <!-- | 1 | <!-- |
| 2 | * @Description: | 2 | * @Description: |
| 3 | * @Autor: renchao | 3 | * @Autor: renchao |
| 4 | * @LastEditTime: 2023-09-14 17:11:15 | 4 | * @LastEditTime: 2023-09-19 09:30:13 |
| 5 | --> | 5 | --> |
| 6 | <template> | 6 | <template> |
| 7 | <transition name="msgbox-fade"> | 7 | <transition name="msgbox-fade"> |
| ... | @@ -160,7 +160,7 @@ | ... | @@ -160,7 +160,7 @@ |
| 160 | .mask-content { | 160 | .mask-content { |
| 161 | padding: 5px 20px 30px 20px; | 161 | padding: 5px 20px 30px 20px; |
| 162 | width: 100%; | 162 | width: 100%; |
| 163 | min-height: 253px; | 163 | min-height: 360px; |
| 164 | max-height: 90vh; | 164 | max-height: 90vh; |
| 165 | overflow-y: scroll; | 165 | overflow-y: scroll; |
| 166 | } | 166 | } | ... | ... |
src/views/djbworkflow/README.md
0 → 100644
| 1 | <!-- 这是补录的业务流程模块 --> | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 1 | <!-- | 1 | <!-- |
| 2 | * @Description: | 2 | * @Description: |
| 3 | * @Autor: renchao | 3 | * @Autor: renchao |
| 4 | * @LastEditTime: 2023-09-18 16:49:25 | 4 | * @LastEditTime: 2023-09-18 17:04:46 |
| 5 | --> | 5 | --> |
| 6 | <template> | 6 | <template> |
| 7 | <dialogBox title="新建材料信息" width="20%" isMain v-model="myValue" @closeDialog="closeDialog" @submitForm="handleSubmit" | 7 | <dialogBox title="新建材料信息" width="20%" isMain v-model="myValue" @closeDialog="closeDialog" @submitForm="handleSubmit" |
| ... | @@ -47,7 +47,8 @@ | ... | @@ -47,7 +47,8 @@ |
| 47 | ruleForm: { | 47 | ruleForm: { |
| 48 | cllx: "", | 48 | cllx: "", |
| 49 | clmc: "", | 49 | clmc: "", |
| 50 | clbm: "" | 50 | clbm: "", |
| 51 | sfggcl: "0" | ||
| 51 | }, | 52 | }, |
| 52 | rules: { | 53 | rules: { |
| 53 | cllx: [ | 54 | cllx: [ |
| ... | @@ -77,7 +78,8 @@ | ... | @@ -77,7 +78,8 @@ |
| 77 | this.ruleForm = { | 78 | this.ruleForm = { |
| 78 | cllx: "", | 79 | cllx: "", |
| 79 | clmc: "", | 80 | clmc: "", |
| 80 | clbm: "" | 81 | clbm: "", |
| 82 | sfggcl: "0" | ||
| 81 | } | 83 | } |
| 82 | }, | 84 | }, |
| 83 | /** | 85 | /** |
| ... | @@ -91,7 +93,8 @@ | ... | @@ -91,7 +93,8 @@ |
| 91 | this.ruleForm = { | 93 | this.ruleForm = { |
| 92 | cllx: "", | 94 | cllx: "", |
| 93 | clmc: "", | 95 | clmc: "", |
| 94 | clbm: "" | 96 | clbm: "", |
| 97 | sfggcl: "0" | ||
| 95 | } | 98 | } |
| 96 | this.$emit("input", false); | 99 | this.$emit("input", false); |
| 97 | } else { | 100 | } else { | ... | ... |
| 1 | <!-- | 1 | <!-- |
| 2 | * @Description: | 2 | * @Description: |
| 3 | * @Autor: renchao | 3 | * @Autor: renchao |
| 4 | * @LastEditTime: 2023-09-14 11:14:54 | 4 | * @LastEditTime: 2023-09-19 08:53:58 |
| 5 | --> | 5 | --> |
| 6 | <template> | 6 | <template> |
| 7 | <div class="clmlmx-box"> | 7 | <div class="clmlmx-box"> |
| 8 | <lb-table :column="column" :key="key" row-key="bsmMaterial" ref="listTable" :heightNumSetting="true" :calcHeight="500" :pagination="false" | 8 | <lb-table :column="column" :key="key" row-key="bsmSj" ref="listTable" :heightNumSetting="true" :calcHeight="600" |
| 9 | :data="tableData"> | 9 | :pagination="false" :data="tableData"> |
| 10 | </lb-table> | 10 | </lb-table> |
| 11 | <div class="text-center"> | 11 | <div class="text-center"> |
| 12 | <el-button @click="handleCancel">取消</el-button> | 12 | <el-button @click="$popupCacel">取消</el-button> |
| 13 | <el-button type="primary" @click="handleSubmit" :loading="loading">保存</el-button> | 13 | <el-button type="primary" @click="handleSubmit" v-if="formData.ableOperation && tableData.length>0" :loading="loading">保存</el-button> |
| 14 | </div> | 14 | </div> |
| 15 | </div> | 15 | </div> |
| 16 | </template> | 16 | </template> |
| 17 | <script> | 17 | <script> |
| 18 | import store from '@/store/index.js' | 18 | import Vue from 'vue' |
| 19 | import Sortable from 'sortablejs' | 19 | import Sortable from 'sortablejs' |
| 20 | import store from '@/store/index.js' | ||
| 20 | import { ywPopupCacel } from "@/utils/popup.js"; | 21 | import { ywPopupCacel } from "@/utils/popup.js"; |
| 21 | import { editCompanyMaterialList } from "@/api/company.js"; | 22 | import { InitClml, updateClml } from "@/api/clxx.js"; |
| 22 | export default { | 23 | export default { |
| 23 | props: { | 24 | props: { |
| 24 | formData: { | 25 | formData: { |
| ... | @@ -34,11 +35,41 @@ | ... | @@ -34,11 +35,41 @@ |
| 34 | sortable: null, | 35 | sortable: null, |
| 35 | column: [ | 36 | column: [ |
| 36 | { | 37 | { |
| 38 | prop: "isrequired", | ||
| 39 | label: "是否必选", | ||
| 40 | width: "80", | ||
| 41 | render: (h, scope) => { | ||
| 42 | if (scope.row.isrequired === "1") { | ||
| 43 | return ( | ||
| 44 | <div> | ||
| 45 | <span>必选</span> | ||
| 46 | </div> | ||
| 47 | ); | ||
| 48 | } | ||
| 49 | else { | ||
| 50 | return ( | ||
| 51 | <div> | ||
| 52 | <span>可选</span> | ||
| 53 | </div> | ||
| 54 | ) | ||
| 55 | } | ||
| 56 | } | ||
| 57 | }, | ||
| 58 | { | ||
| 37 | label: "材料名称", | 59 | label: "材料名称", |
| 38 | render: (h, scope) => { | 60 | render: (h, scope) => { |
| 39 | return ( | 61 | return ( |
| 40 | (scope.row.sfxjcl == '1') ? | 62 | (this.formData.ableOperation && scope.row.sfxjcl == '1') ? |
| 41 | <el-input value={scope.row.clmc} onInput={(val) => { scope.row.clmc = val }}></el-input> : <span>{scope.row.clmc}</span> | 63 | <el-input value={scope.row.sjmc} onInput={(val) => { scope.row.sjmc = val }}></el-input> : <span>{scope.row.sjmc}</span> |
| 64 | ) | ||
| 65 | } | ||
| 66 | }, | ||
| 67 | { | ||
| 68 | label: "材料编码", | ||
| 69 | render: (h, scope) => { | ||
| 70 | return ( | ||
| 71 | (this.formData.ableOperation && scope.row.sfxjcl == '1') ? | ||
| 72 | <el-input value={scope.row.sjbm} onInput={(val) => { scope.row.sjbm = val }}></el-input> : <span>{scope.row.sjbm}</span> | ||
| 42 | ) | 73 | ) |
| 43 | } | 74 | } |
| 44 | }, | 75 | }, |
| ... | @@ -47,27 +78,50 @@ | ... | @@ -47,27 +78,50 @@ |
| 47 | width: "110", | 78 | width: "110", |
| 48 | render: (h, scope) => { | 79 | render: (h, scope) => { |
| 49 | return ( | 80 | return ( |
| 50 | <el-select value={scope.row.cllx} | 81 | this.formData.ableOperation ? |
| 51 | onChange={(val) => { scope.row.cllx = val }}> | 82 | <el-select value={scope.row.sjlx} |
| 52 | { | 83 | onChange={(val) => { scope.row.sjlx = val }}> |
| 53 | store.getters.dictData['A40'].map(option => { | 84 | { |
| 54 | return ( | 85 | store.getters.dictData['A40'].map(option => { |
| 55 | <el-option label={option.dname} value={option.dcode}></el-option> | 86 | return ( |
| 56 | ) | 87 | <el-option label={option.dname} value={option.dcode}></el-option> |
| 57 | }) | 88 | ) |
| 58 | } | 89 | }) |
| 59 | </el-select> | 90 | } |
| 91 | </el-select> : <span>{this.dicStatus(scope.row.sjlx, "A40")}</span> | ||
| 60 | ) | 92 | ) |
| 61 | } | 93 | } |
| 62 | }, | 94 | }, |
| 63 | { | 95 | { |
| 64 | label: "页数", | 96 | prop: "sjsl", |
| 97 | label: "收件数量", | ||
| 65 | width: "80", | 98 | width: "80", |
| 66 | render: (h, scope) => { | 99 | render: (h, scope) => { |
| 67 | if (scope.row.count && scope.row.count > 0) { | 100 | return ( |
| 101 | (this.formData.ableOperation) ? | ||
| 102 | <el-input value={scope.row.sjsl} onInput={(val) => { scope.row.sjsl = val }}></el-input> : <span>{ | ||
| 103 | scope.row.sjsl | ||
| 104 | }</span> | ||
| 105 | ) | ||
| 106 | } | ||
| 107 | }, | ||
| 108 | { | ||
| 109 | label: "扫描时间", | ||
| 110 | width: "140", | ||
| 111 | render: (h, scope) => { | ||
| 112 | return ( | ||
| 113 | <span>{scope.row.sjsj}</span> | ||
| 114 | ) | ||
| 115 | } | ||
| 116 | }, | ||
| 117 | { | ||
| 118 | label: "页数", | ||
| 119 | width: "60", | ||
| 120 | render: (h, scope) => { | ||
| 121 | if (scope.row.ys && scope.row.ys > 0) { | ||
| 68 | return ( | 122 | return ( |
| 69 | <div> | 123 | <div> |
| 70 | <span>{scope.row.count}</span> | 124 | <span>{scope.row.ys}</span> |
| 71 | </div> | 125 | </div> |
| 72 | ); | 126 | ); |
| 73 | } else { | 127 | } else { |
| ... | @@ -80,6 +134,21 @@ | ... | @@ -80,6 +134,21 @@ |
| 80 | }, | 134 | }, |
| 81 | }, | 135 | }, |
| 82 | { | 136 | { |
| 137 | label: "是否新建材料", | ||
| 138 | width: "80", | ||
| 139 | render: (h, scope) => { | ||
| 140 | if (scope.row.sfxjcl && scope.row.sfxjcl == '1') { | ||
| 141 | return ( | ||
| 142 | <span>是</span> | ||
| 143 | ); | ||
| 144 | } else { | ||
| 145 | return ( | ||
| 146 | <span>否</span> | ||
| 147 | ); | ||
| 148 | } | ||
| 149 | }, | ||
| 150 | }, | ||
| 151 | { | ||
| 83 | label: "操作", | 152 | label: "操作", |
| 84 | width: "100", | 153 | width: "100", |
| 85 | render: (h, scope) => { | 154 | render: (h, scope) => { |
| ... | @@ -87,7 +156,7 @@ | ... | @@ -87,7 +156,7 @@ |
| 87 | <el-button | 156 | <el-button |
| 88 | type="text" | 157 | type="text" |
| 89 | icon="el-icon-delete" | 158 | icon="el-icon-delete" |
| 90 | disabled={scope.row.count != 0} | 159 | disabled={!(scope.row.ys == 0 && scope.row.sfxjcl == '1') || !this.formData.ableOperation} |
| 91 | onClick={() => { | 160 | onClick={() => { |
| 92 | this.handleDelete(scope.$index, scope.row); | 161 | this.handleDelete(scope.$index, scope.row); |
| 93 | }} | 162 | }} |
| ... | @@ -102,15 +171,6 @@ | ... | @@ -102,15 +171,6 @@ |
| 102 | tableData: [] | 171 | tableData: [] |
| 103 | } | 172 | } |
| 104 | }, | 173 | }, |
| 105 | mounted () { | ||
| 106 | this.initSort() | ||
| 107 | this.tableData = _.cloneDeep(this.formData.data) | ||
| 108 | }, | ||
| 109 | beforeDestroy () { | ||
| 110 | if (this.sortable) { | ||
| 111 | this.sortable.destroy(); | ||
| 112 | } | ||
| 113 | }, | ||
| 114 | watch: { | 174 | watch: { |
| 115 | 'formData.data': { | 175 | 'formData.data': { |
| 116 | handler: function (val, oldVal) { | 176 | handler: function (val, oldVal) { |
| ... | @@ -120,32 +180,61 @@ | ... | @@ -120,32 +180,61 @@ |
| 120 | deep: true | 180 | deep: true |
| 121 | } | 181 | } |
| 122 | }, | 182 | }, |
| 183 | mounted () { | ||
| 184 | this.initSort() | ||
| 185 | }, | ||
| 186 | beforeDestroy () { | ||
| 187 | if (this.sortable) { | ||
| 188 | this.sortable.destroy(); | ||
| 189 | } | ||
| 190 | }, | ||
| 123 | methods: { | 191 | methods: { |
| 124 | handleCancel () { | ||
| 125 | ywPopupCacel() | ||
| 126 | }, | ||
| 127 | handleSubmit () { | 192 | handleSubmit () { |
| 128 | this.loading = true | 193 | this.loading = true |
| 129 | store.dispatch('user/reWorkFresh', false) | 194 | store.dispatch('user/reWorkFresh', false) |
| 130 | editCompanyMaterialList(this.tableData, this.formData.bsmCompany).then(res => { | 195 | updateClml(this.tableData, this.formData.bsmSldy, Vue.prototype.$currentRoute.query.bsmSlsq).then(res => { |
| 131 | this.loading = false | 196 | this.loading = false |
| 132 | if (res.code == 200) { | 197 | if (res.code == 200) { |
| 133 | this.$message({ | 198 | this.$message({ |
| 134 | message: '保存成功', | 199 | message: '保存成功', |
| 135 | type: 'success' | 200 | type: 'success' |
| 136 | }) | 201 | }) |
| 137 | store.dispatch('user/reWorkFresh', true) | ||
| 138 | ywPopupCacel() | 202 | ywPopupCacel() |
| 203 | store.dispatch('user/reWorkFresh', true) | ||
| 139 | } | 204 | } |
| 140 | }).catch(() => { | 205 | }).catch(() => { |
| 141 | this.loading = false | 206 | this.loading = false |
| 142 | }) | 207 | }) |
| 143 | }, | 208 | }, |
| 144 | /** | 209 | /** |
| 210 | * @description: 材料目录明细初始化 | ||
| 211 | * @author: renchao | ||
| 212 | */ | ||
| 213 | clmlInitList () { | ||
| 214 | return new Promise(resolve => { | ||
| 215 | this.unitData = this.$parent.unitData; | ||
| 216 | var formdata = new FormData(); | ||
| 217 | formdata.append("bsmSlsq", Vue.prototype.$currentRoute.query.bsmSlsq); | ||
| 218 | formdata.append("bsmSldy", this.formData.bsmRepair); | ||
| 219 | formdata.append("clfl", 3); | ||
| 220 | InitClml(formdata).then((res) => { | ||
| 221 | if (res.code == 200) { | ||
| 222 | resolve(res.code) | ||
| 223 | if (res.result && res.result.length > 0) { | ||
| 224 | this.tableData = res.result; | ||
| 225 | } else { | ||
| 226 | this.tableData = [] | ||
| 227 | } | ||
| 228 | } else { | ||
| 229 | this.$message.error(res.message) | ||
| 230 | } | ||
| 231 | }) | ||
| 232 | }) | ||
| 233 | }, | ||
| 234 | /** | ||
| 145 | * @description: 材料目录删除 | 235 | * @description: 材料目录删除 |
| 146 | * @param {*} index | 236 | * @param {*} index |
| 147 | * @param {*} row | 237 | * @param {*} row |
| 148 | * @author: renchao | ||
| 149 | */ | 238 | */ |
| 150 | handleDelete (index, row) { | 239 | handleDelete (index, row) { |
| 151 | this.$confirm('此操作将永久删除该 是否继续?', '提示', { | 240 | this.$confirm('此操作将永久删除该 是否继续?', '提示', { |
| ... | @@ -173,7 +262,19 @@ | ... | @@ -173,7 +262,19 @@ |
| 173 | this.tableData.splice(evt.newIndex, 0, targetRow); | 262 | this.tableData.splice(evt.newIndex, 0, targetRow); |
| 174 | } | 263 | } |
| 175 | }) | 264 | }) |
| 176 | } | 265 | }, |
| 266 | dicStatus (val, code) { | ||
| 267 | let data = store.getters.dictData[code], | ||
| 268 | name = '暂无' | ||
| 269 | if (data) { | ||
| 270 | data.map((item) => { | ||
| 271 | if (item.dcode == val) { | ||
| 272 | name = item.dname | ||
| 273 | } | ||
| 274 | }) | ||
| 275 | return name | ||
| 276 | } | ||
| 277 | }, | ||
| 177 | } | 278 | } |
| 178 | } | 279 | } |
| 179 | </script> | 280 | </script> | ... | ... |
| 1 | <!-- | 1 | <!-- |
| 2 | * @Description: | 2 | * @Description: |
| 3 | * @Autor: renchao | 3 | * @Autor: renchao |
| 4 | * @LastEditTime: 2023-09-14 16:24:07 | 4 | * @LastEditTime: 2023-09-18 17:11:37 |
| 5 | --> | 5 | --> |
| 6 | <template> | 6 | <template> |
| 7 | <div class="rlPopup"> | 7 | <div class="rlPopup"> |
| ... | @@ -14,7 +14,7 @@ | ... | @@ -14,7 +14,7 @@ |
| 14 | <div class="img-list-wrap" v-Loading="loading"> | 14 | <div class="img-list-wrap" v-Loading="loading"> |
| 15 | <img src="http://127.0.0.1:38088/video=stream&camidx=0" v-if="isScan" alt="高拍仪"> | 15 | <img src="http://127.0.0.1:38088/video=stream&camidx=0" v-if="isScan" alt="高拍仪"> |
| 16 | <div v-for="(img, i) in previewImg.imgList" :key="i" v-else> | 16 | <div v-for="(img, i) in previewImg.imgList" :key="i" v-else> |
| 17 | <photo-zoom :url="img.fileurl" :bigWidth="165" v-if="i === previewImg.index" :scale="2" | 17 | <photo-zoom :url="img.fjurl" :bigWidth="165" v-if="i === previewImg.index" :scale="2" |
| 18 | overlayStyle="width: 100%;height:100%"> | 18 | overlayStyle="width: 100%;height:100%"> |
| 19 | </photo-zoom> | 19 | </photo-zoom> |
| 20 | </div> | 20 | </div> |
| ... | @@ -41,7 +41,7 @@ | ... | @@ -41,7 +41,7 @@ |
| 41 | <ul> | 41 | <ul> |
| 42 | <li v-for="(img, index) in thumbnailImages" :key="index" :class="{ active: previewImg.index === index }" | 42 | <li v-for="(img, index) in thumbnailImages" :key="index" :class="{ active: previewImg.index === index }" |
| 43 | @click="showCurrent(index)"> | 43 | @click="showCurrent(index)"> |
| 44 | <img :src="img.fileurl"> | 44 | <img :src="img.fjurl"> |
| 45 | </li> | 45 | </li> |
| 46 | </ul> | 46 | </ul> |
| 47 | </div> | 47 | </div> |
| ... | @@ -53,7 +53,7 @@ | ... | @@ -53,7 +53,7 @@ |
| 53 | <script> | 53 | <script> |
| 54 | import PhotoZoom from '@/components/PhotoZoom' | 54 | import PhotoZoom from '@/components/PhotoZoom' |
| 55 | import { getAltimeterInfo, getUuid } from '@/utils/operation.js' | 55 | import { getAltimeterInfo, getUuid } from '@/utils/operation.js' |
| 56 | import { uploadBatch, deleteFile, move } from "@/api/company.js" | 56 | import { uploadBatch, deleteClmx, move } from "@/api/clxx.js"; |
| 57 | import publicPicture from '@/components/publicPicture/index.vue' | 57 | import publicPicture from '@/components/publicPicture/index.vue' |
| 58 | export default { | 58 | export default { |
| 59 | name: 'PreviewImage', | 59 | name: 'PreviewImage', |
| ... | @@ -86,7 +86,7 @@ | ... | @@ -86,7 +86,7 @@ |
| 86 | // 缩略图 | 86 | // 缩略图 |
| 87 | thumbnailImages: [], | 87 | thumbnailImages: [], |
| 88 | showViewer: false, | 88 | showViewer: false, |
| 89 | initialIndex: 0, | 89 | initialIndex: undefined, |
| 90 | allLi: [], | 90 | allLi: [], |
| 91 | } | 91 | } |
| 92 | }, | 92 | }, |
| ... | @@ -94,7 +94,7 @@ | ... | @@ -94,7 +94,7 @@ |
| 94 | previewImg: { | 94 | previewImg: { |
| 95 | handler (newValue, oldValue) { | 95 | handler (newValue, oldValue) { |
| 96 | if (newValue.imgList && newValue.imgList.length > 0) { | 96 | if (newValue.imgList && newValue.imgList.length > 0) { |
| 97 | this.allLi = _.cloneDeep(newValue.imgList).map(item => item.fileurl) | 97 | this.allLi = _.cloneDeep(newValue.imgList).map(item => item.fjurl) |
| 98 | this.thumbnailImages = newValue.imgList | 98 | this.thumbnailImages = newValue.imgList |
| 99 | } else { | 99 | } else { |
| 100 | this.allLi = [] | 100 | this.allLi = [] |
| ... | @@ -134,18 +134,14 @@ | ... | @@ -134,18 +134,14 @@ |
| 134 | setTimeout(() => { | 134 | setTimeout(() => { |
| 135 | this.scanTitle = '关闭高拍仪' | 135 | this.scanTitle = '关闭高拍仪' |
| 136 | this.loading = false | 136 | this.loading = false |
| 137 | }, 3000) | 137 | }, 4000) |
| 138 | } else { | 138 | } else { |
| 139 | this.scanTitle = '打开高拍仪' | 139 | this.scanTitle = '打开高拍仪' |
| 140 | } | 140 | } |
| 141 | }, | 141 | }, |
| 142 | /** | 142 | // 左右移动 |
| 143 | * @description: 左右移动 | ||
| 144 | * @param {*} direction | ||
| 145 | * @author: renchao | ||
| 146 | */ | ||
| 147 | handleMove (direction) { | 143 | handleMove (direction) { |
| 148 | move(this.previewImg.imgList[this.previewImg.index].bsmFile, direction).then(res => { | 144 | move(direction, this.previewImg.imgList[this.previewImg.index].bsmClmx).then(res => { |
| 149 | if (res.code == 200) { | 145 | if (res.code == 200) { |
| 150 | if (direction == 'left') { | 146 | if (direction == 'left') { |
| 151 | this.previewImg.index = this.previewImg.index - 1 | 147 | this.previewImg.index = this.previewImg.index - 1 |
| ... | @@ -153,7 +149,7 @@ | ... | @@ -153,7 +149,7 @@ |
| 153 | this.previewImg.index = this.previewImg.index + 1 | 149 | this.previewImg.index = this.previewImg.index + 1 |
| 154 | } | 150 | } |
| 155 | this.initialIndex = this.previewImg.index | 151 | this.initialIndex = this.previewImg.index |
| 156 | this.$emit('updateList', { children: res.result, bsmMaterial: this.previewImg.bsmMaterial }) | 152 | this.$emit('updateList', { children: res.result, bsmSj: this.previewImg.bsmSj }) |
| 157 | this.$message({ | 153 | this.$message({ |
| 158 | message: '移动成功!', | 154 | message: '移动成功!', |
| 159 | type: 'success' | 155 | type: 'success' |
| ... | @@ -195,7 +191,7 @@ | ... | @@ -195,7 +191,7 @@ |
| 195 | let file = blobToFile(blob); | 191 | let file = blobToFile(blob); |
| 196 | var formData = new FormData(); | 192 | var formData = new FormData(); |
| 197 | formData.append('file', file) | 193 | formData.append('file', file) |
| 198 | formData.append("bsmMaterial ", this.previewImg.bsmMaterial); | 194 | formData.append("bsmSj", this.previewImg.bsmSj); |
| 199 | formData.append("bsmSlsq", this.previewImg.bsmSlsq); | 195 | formData.append("bsmSlsq", this.previewImg.bsmSlsq); |
| 200 | uploadSjClmx(formData).then((res) => { | 196 | uploadSjClmx(formData).then((res) => { |
| 201 | if (res.code == 200) { | 197 | if (res.code == 200) { |
| ... | @@ -292,13 +288,14 @@ | ... | @@ -292,13 +288,14 @@ |
| 292 | this.key++ | 288 | this.key++ |
| 293 | return; | 289 | return; |
| 294 | } | 290 | } |
| 295 | formData.append("bsmMaterial", this.previewImg.bsmMaterial); | 291 | formData.append("bsmSj", this.previewImg.bsmSj); |
| 292 | formData.append("bsmSlsq", this.previewImg.bsmSlsq); | ||
| 296 | if (this.previewImg.imgList.length > 0) { | 293 | if (this.previewImg.imgList.length > 0) { |
| 297 | formData.append("index", this.previewImg.imgList[this.previewImg.index].sxh); | 294 | formData.append("index", this.previewImg.imgList[this.previewImg.index].sxh); |
| 298 | } | 295 | } |
| 299 | uploadBatch(formData).then((res) => { | 296 | uploadBatch(formData).then((res) => { |
| 300 | if (res.code == 200) { | 297 | if (res.code == 200) { |
| 301 | this.$emit('updateList', { children: res.result, bsmMaterial: this.previewImg.bsmMaterial }) | 298 | this.$emit('updateList', { children: res.result, bsmSj: this.previewImg.bsmSj }) |
| 302 | this.$message({ | 299 | this.$message({ |
| 303 | message: '上传成功!', | 300 | message: '上传成功!', |
| 304 | type: 'success' | 301 | type: 'success' |
| ... | @@ -320,12 +317,12 @@ | ... | @@ -320,12 +317,12 @@ |
| 320 | cancelButtonText: '取消', | 317 | cancelButtonText: '取消', |
| 321 | type: 'warning' | 318 | type: 'warning' |
| 322 | }).then(async () => { | 319 | }).then(async () => { |
| 323 | let bsmFile = this.previewImg.imgList[this.previewImg.index].bsmFile | 320 | let bsmClmx = this.previewImg.imgList[this.previewImg.index].bsmClmx |
| 324 | let bsmMaterial = this.previewImg.imgList[this.previewImg.index].bsmMaterial | 321 | let bsmSj = this.previewImg.imgList[this.previewImg.index].bsmSj |
| 325 | this.previewImg.imgList = this.previewImg.imgList.filter(item => item.bsmFile != bsmFile) | 322 | this.previewImg.imgList = this.previewImg.imgList.filter(item => item.bsmClmx != bsmClmx) |
| 326 | deleteFile(bsmFile).then(res => { | 323 | deleteClmx(bsmClmx).then(res => { |
| 327 | if (res.code == 200) { | 324 | if (res.code == 200) { |
| 328 | that.$emit('updateList', { children: this.previewImg.imgList, bsmMaterial: bsmMaterial }) | 325 | that.$emit('updateList', { children: this.previewImg.imgList, bsmSj: bsmSj }) |
| 329 | that.$message({ | 326 | that.$message({ |
| 330 | message: '删除成功!', | 327 | message: '删除成功!', |
| 331 | type: 'success' | 328 | type: 'success' | ... | ... |
| 1 | <!-- | 1 | <!-- |
| 2 | * @Description: | 2 | * @Description: |
| 3 | * @Autor: renchao | 3 | * @Autor: renchao |
| 4 | * @LastEditTime: 2023-09-18 16:57:31 | 4 | * @LastEditTime: 2023-09-19 09:28:13 |
| 5 | --> | 5 | --> |
| 6 | <template> | 6 | <template> |
| 7 | <div class="clxx"> | 7 | <div class="clxx"> |
| ... | @@ -29,12 +29,12 @@ | ... | @@ -29,12 +29,12 @@ |
| 29 | </div> | 29 | </div> |
| 30 | <div | 30 | <div |
| 31 | v-for="(item, index) in tableData" | 31 | v-for="(item, index) in tableData" |
| 32 | :key="item.bsmMaterial" | 32 | :key="item.bsmSj" |
| 33 | :class="['child', treeCheckId == item.bsmMaterial ? 'checked' : '']" | 33 | :class="['child', treeCheckId == item.bsmSj ? 'checked' : '']" |
| 34 | @click="treeClick(item, index)"> | 34 | @click="treeClick(item, index)"> |
| 35 | {{ item.clmc }} | 35 | <span v-if="item.isrequired == 1" class="required">必选</span> |
| 36 | <span class="cl_number" :key="key" v-if="item.count">({{ item.count }})</span> | 36 | {{ item.sjmc }} |
| 37 | <span class="cl_number" :key="key" v-else>(0)</span> | 37 | <span class="cl_number" :key="key">({{ item.ys ? item.ys : 0 }})</span> |
| 38 | </div> | 38 | </div> |
| 39 | </div> | 39 | </div> |
| 40 | </div> | 40 | </div> |
| ... | @@ -62,7 +62,7 @@ | ... | @@ -62,7 +62,7 @@ |
| 62 | import imagePreview from "./dialog/imagePreview.vue"; | 62 | import imagePreview from "./dialog/imagePreview.vue"; |
| 63 | import clxxAddDialog from "./dialog/clxxAddDialog.vue"; | 63 | import clxxAddDialog from "./dialog/clxxAddDialog.vue"; |
| 64 | import clxxDetailDialog from "./dialog/clxxDetailDialog.vue"; | 64 | import clxxDetailDialog from "./dialog/clxxDetailDialog.vue"; |
| 65 | import { repairInitClml, saveClml } from "@/api/clxx.js"; | 65 | import { repairInitClml, saveClml, getClmxList } from "@/api/clxx.js"; |
| 66 | export default { | 66 | export default { |
| 67 | components: { clxxAddDialog, imagePreview, clxxDetailDialog }, | 67 | components: { clxxAddDialog, imagePreview, clxxDetailDialog }, |
| 68 | props: { | 68 | props: { |
| ... | @@ -83,7 +83,7 @@ | ... | @@ -83,7 +83,7 @@ |
| 83 | key: 0, | 83 | key: 0, |
| 84 | tableData: [], | 84 | tableData: [], |
| 85 | previewImg: { | 85 | previewImg: { |
| 86 | bsmMaterial: "", | 86 | bsmSj: "", |
| 87 | index: 0, | 87 | index: 0, |
| 88 | selectedIndex: 0, | 88 | selectedIndex: 0, |
| 89 | imgList: [] | 89 | imgList: [] |
| ... | @@ -116,19 +116,19 @@ | ... | @@ -116,19 +116,19 @@ |
| 116 | if (this.treeCheckIndex < this.tableData.length) { | 116 | if (this.treeCheckIndex < this.tableData.length) { |
| 117 | this.treeCheckIndex++; | 117 | this.treeCheckIndex++; |
| 118 | if (this.tableData[this.treeCheckIndex]) { | 118 | if (this.tableData[this.treeCheckIndex]) { |
| 119 | this.treeCheckId = this.tableData[this.treeCheckIndex].bsmMaterial; | 119 | this.treeCheckId = this.tableData[this.treeCheckIndex].bsmSj; |
| 120 | // 判断页数 | 120 | // 判断页数 |
| 121 | let ys = this.tableData[this.treeCheckIndex].ys | 121 | let ys = this.tableData[this.treeCheckIndex].ys |
| 122 | this.previewImg.index = 0; | 122 | this.previewImg.index = 0; |
| 123 | // 获取材料明细 | 123 | // 获取材料明细 |
| 124 | if (ys > 0) { | 124 | if (ys > 0) { |
| 125 | getFileListByBsmMaterial(this.treeCheckId).then(res => { | 125 | getClmxList(this.treeCheckId).then(res => { |
| 126 | this.previewImg.imgList = res.result ? res.result : [] | 126 | this.previewImg.imgList = res.result ? res.result : [] |
| 127 | }) | 127 | }) |
| 128 | } else { | 128 | } else { |
| 129 | this.previewImg.imgList = [] | 129 | this.previewImg.imgList = [] |
| 130 | } | 130 | } |
| 131 | this.previewImg.bsmMaterial = this.tableData[this.treeCheckIndex].bsmMaterial; | 131 | this.previewImg.bsmSj = this.tableData[this.treeCheckIndex].bsmSj; |
| 132 | } else { | 132 | } else { |
| 133 | this.$message.error('没有最后一张了'); | 133 | this.$message.error('没有最后一张了'); |
| 134 | } | 134 | } |
| ... | @@ -141,11 +141,11 @@ | ... | @@ -141,11 +141,11 @@ |
| 141 | prevPriview () { | 141 | prevPriview () { |
| 142 | if (this.treeCheckIndex >= 1) { | 142 | if (this.treeCheckIndex >= 1) { |
| 143 | this.treeCheckIndex--; | 143 | this.treeCheckIndex--; |
| 144 | this.treeCheckId = this.tableData[this.treeCheckIndex].bsmMaterial; | 144 | this.treeCheckId = this.tableData[this.treeCheckIndex].bsmSj; |
| 145 | // 判断页数 | 145 | // 判断页数 |
| 146 | let ys = this.tableData[this.treeCheckIndex].ys | 146 | let ys = this.tableData[this.treeCheckIndex].ys |
| 147 | if (ys > 0) { | 147 | if (ys > 0) { |
| 148 | getFileListByBsmMaterial(this.treeCheckId).then(res => { | 148 | getClmxList(this.treeCheckId).then(res => { |
| 149 | this.previewImg.imgList = res.result ? res.result : [] | 149 | this.previewImg.imgList = res.result ? res.result : [] |
| 150 | this.previewImg.index = this.previewImg.imgList.length - 1; | 150 | this.previewImg.index = this.previewImg.imgList.length - 1; |
| 151 | }) | 151 | }) |
| ... | @@ -153,7 +153,7 @@ | ... | @@ -153,7 +153,7 @@ |
| 153 | this.previewImg.imgList = []; | 153 | this.previewImg.imgList = []; |
| 154 | this.previewImg.index = 0 | 154 | this.previewImg.index = 0 |
| 155 | } | 155 | } |
| 156 | this.previewImg.bsmMaterial = this.tableData[this.treeCheckIndex].bsmMaterial; | 156 | this.previewImg.bsmSj = this.tableData[this.treeCheckIndex].bsmSj; |
| 157 | } else { | 157 | } else { |
| 158 | this.$message.error('没有第一张了'); | 158 | this.$message.error('没有第一张了'); |
| 159 | } | 159 | } |
| ... | @@ -193,12 +193,12 @@ | ... | @@ -193,12 +193,12 @@ |
| 193 | * @author: renchao | 193 | * @author: renchao |
| 194 | */ | 194 | */ |
| 195 | setChecked (item) { | 195 | setChecked (item) { |
| 196 | this.treeCheckId = item.bsmMaterial; | 196 | this.treeCheckId = item.bsmSj; |
| 197 | this.title = item.sjmc; | 197 | this.title = item.sjmc; |
| 198 | this.titleYs = 1; | 198 | this.titleYs = 1; |
| 199 | this.titleNum = item.children.length; | 199 | this.titleNum = item.children.length; |
| 200 | this.previewImg.imgList = item.children; | 200 | this.previewImg.imgList = item.children; |
| 201 | this.previewImg.bsmMaterial = item.bsmMaterial; | 201 | this.previewImg.bsmSj = item.bsmSj; |
| 202 | }, | 202 | }, |
| 203 | /** | 203 | /** |
| 204 | * @description: updateList | 204 | * @description: updateList |
| ... | @@ -210,7 +210,7 @@ | ... | @@ -210,7 +210,7 @@ |
| 210 | if (val.children.length != 0) { | 210 | if (val.children.length != 0) { |
| 211 | //删除最后一张图片时 val=null | 211 | //删除最后一张图片时 val=null |
| 212 | this.tableData.forEach((item) => { | 212 | this.tableData.forEach((item) => { |
| 213 | if (item.bsmMaterial == val.bsmMaterial) { | 213 | if (item.bsmSj == val.bsmSj) { |
| 214 | item.count = val.children.length | 214 | item.count = val.children.length |
| 215 | } | 215 | } |
| 216 | }); | 216 | }); |
| ... | @@ -222,7 +222,7 @@ | ... | @@ -222,7 +222,7 @@ |
| 222 | } else { | 222 | } else { |
| 223 | this.previewImg.imgList = []; | 223 | this.previewImg.imgList = []; |
| 224 | this.tableData.forEach((item, index) => { | 224 | this.tableData.forEach((item, index) => { |
| 225 | if (this.treeCheckId == item.bsmMaterial) { | 225 | if (this.treeCheckId == item.bsmSj) { |
| 226 | item.count = 0; | 226 | item.count = 0; |
| 227 | that.treeCheckIndex = index; | 227 | that.treeCheckIndex = index; |
| 228 | } | 228 | } |
| ... | @@ -242,16 +242,35 @@ | ... | @@ -242,16 +242,35 @@ |
| 242 | * @author: renchao | 242 | * @author: renchao |
| 243 | */ | 243 | */ |
| 244 | addSave (data) { | 244 | addSave (data) { |
| 245 | saveClml({ ...data, bsmSldy: this.$parent.bsmRepair, bsmSlsq: this.$parent.bsmSlsq }).then(async (res) => { | 245 | let obj = { |
| 246 | bsmSlsq: this.$parent.bsmSlsq, | ||
| 247 | isrequired: "1", | ||
| 248 | sjmc: data.clmc, | ||
| 249 | sjsl: 0, | ||
| 250 | smzt: "", | ||
| 251 | ys: 0, | ||
| 252 | sjlx: data.cllx, | ||
| 253 | sjbm: data.clbm, | ||
| 254 | sfxjcl: "1", // 是否必选 | ||
| 255 | sfggcl: data.sfggcl, | ||
| 256 | }; | ||
| 257 | //是否公共材料 | ||
| 258 | if (data.sfggcl == "0") { | ||
| 259 | obj["bsmSldy"] = this.$parent.currentSelectProps.bsmSldy; | ||
| 260 | } | ||
| 261 | if (this.$route.query.sqywbm == "DJBBL") { | ||
| 262 | obj.bsmSldy = this.$parent.bsmRepair | ||
| 263 | } | ||
| 264 | saveClml(obj).then(async (res) => { | ||
| 246 | if (res.code == 200) { | 265 | if (res.code == 200) { |
| 247 | let res = await this.clmlInitList(2); | 266 | let res = await this.clmlInitList(2); |
| 248 | if (res == 200) | 267 | if (res == 200) |
| 249 | this.$message({ | 268 | this.$message({ |
| 250 | message: "新增成功", | 269 | message: "新增成功", |
| 251 | type: "success" | 270 | type: "success", |
| 252 | }) | 271 | }); |
| 253 | } | 272 | } |
| 254 | }) | 273 | }); |
| 255 | }, | 274 | }, |
| 256 | /** | 275 | /** |
| 257 | * @description: 材料目录点击选中 | 276 | * @description: 材料目录点击选中 |
| ... | @@ -261,12 +280,12 @@ | ... | @@ -261,12 +280,12 @@ |
| 261 | */ | 280 | */ |
| 262 | treeClick (item, index) { | 281 | treeClick (item, index) { |
| 263 | this.previewImg.index = 0; | 282 | this.previewImg.index = 0; |
| 264 | this.treeCheckId = item?.bsmMaterial; | 283 | this.treeCheckId = item?.bsmSj; |
| 265 | this.treeCheckIndex = index; | 284 | this.treeCheckIndex = index; |
| 266 | getFileListByBsmMaterial(item.bsmMaterial).then(res => { | 285 | getClmxList(item.bsmSj).then(res => { |
| 267 | this.previewImg.imgList = res.result ? res.result : [] | 286 | this.previewImg.imgList = res.result ? res.result : [] |
| 268 | }) | 287 | }) |
| 269 | this.previewImg.bsmMaterial = item?.bsmMaterial; | 288 | this.previewImg.bsmSj = item?.bsmSj; |
| 270 | }, | 289 | }, |
| 271 | /** | 290 | /** |
| 272 | * @description: 小图片点击 | 291 | * @description: 小图片点击 |
| ... | @@ -281,7 +300,7 @@ | ... | @@ -281,7 +300,7 @@ |
| 281 | //查看明细 | 300 | //查看明细 |
| 282 | viewDetail () { | 301 | viewDetail () { |
| 283 | store.dispatch("user/reWorkFresh", false); | 302 | store.dispatch("user/reWorkFresh", false); |
| 284 | ywPopupDialog("申请材料目录", "xxba/components/clxx/dialog/clxxDetailDialog", { | 303 | ywPopupDialog("申请材料目录", "djbworkflow/components/clxx/dialog/clxxDetailDialog", { |
| 285 | data: this.tableData, | 304 | data: this.tableData, |
| 286 | }, "60%", true, false) | 305 | }, "60%", true, false) |
| 287 | }, | 306 | }, |
| ... | @@ -393,6 +412,7 @@ | ... | @@ -393,6 +412,7 @@ |
| 393 | line-height: 20px; | 412 | line-height: 20px; |
| 394 | transition: all 0.3s; | 413 | transition: all 0.3s; |
| 395 | padding: 8px 0; | 414 | padding: 8px 0; |
| 415 | overflow: hidden; | ||
| 396 | } | 416 | } |
| 397 | 417 | ||
| 398 | .child:hover { | 418 | .child:hover { | ... | ... |
| 1 | <!-- | ||
| 2 | * @Description: | ||
| 3 | * @Autor: renchao | ||
| 4 | * @LastEditTime: 2023-09-15 15:38:53 | ||
| 5 | --> | ||
| 6 | <template> | ||
| 7 | <div class="clmlmx-box"> | ||
| 8 | <lb-table :column="column" :key="key" row-key="bsmMaterial" ref="listTable" :heightNumSetting="true" :calcHeight="500" :pagination="false" | ||
| 9 | :data="tableData"> | ||
| 10 | </lb-table> | ||
| 11 | <div class="text-center"> | ||
| 12 | <el-button @click="handleCancel">取消</el-button> | ||
| 13 | <el-button type="primary" @click="handleSubmit" :loading="loading">保存</el-button> | ||
| 14 | </div> | ||
| 15 | </div> | ||
| 16 | </template> | ||
| 17 | <script> | ||
| 18 | import store from '@/store/index.js' | ||
| 19 | import Sortable from 'sortablejs' | ||
| 20 | import { ywPopupCacel } from "@/utils/popup.js"; | ||
| 21 | import { editCompanyMaterialList } from "@/api/company.js"; | ||
| 22 | export default { | ||
| 23 | props: { | ||
| 24 | formData: { | ||
| 25 | type: Object, | ||
| 26 | default: () => { | ||
| 27 | return {} | ||
| 28 | } | ||
| 29 | } | ||
| 30 | }, | ||
| 31 | data () { | ||
| 32 | return { | ||
| 33 | loading: false, | ||
| 34 | sortable: null, | ||
| 35 | column: [ | ||
| 36 | { | ||
| 37 | label: "材料名称", | ||
| 38 | render: (h, scope) => { | ||
| 39 | return ( | ||
| 40 | <el-input value={scope.row.clmc} onInput={(val) => { scope.row.clmc = val }}></el-input> | ||
| 41 | ) | ||
| 42 | } | ||
| 43 | }, | ||
| 44 | { | ||
| 45 | label: "材料编码", | ||
| 46 | render: (h, scope) => { | ||
| 47 | return ( | ||
| 48 | <el-input value={scope.row.clbm} onInput={(val) => { scope.row.clbm = val }}></el-input> | ||
| 49 | ) | ||
| 50 | } | ||
| 51 | }, | ||
| 52 | { | ||
| 53 | label: "材料类型", | ||
| 54 | width: "110", | ||
| 55 | render: (h, scope) => { | ||
| 56 | return ( | ||
| 57 | <el-select value={scope.row.cllx} | ||
| 58 | onChange={(val) => { scope.row.cllx = val }}> | ||
| 59 | { | ||
| 60 | store.getters.dictData['A40'].map(option => { | ||
| 61 | return ( | ||
| 62 | <el-option label={option.dname} value={option.dcode}></el-option> | ||
| 63 | ) | ||
| 64 | }) | ||
| 65 | } | ||
| 66 | </el-select> | ||
| 67 | ) | ||
| 68 | } | ||
| 69 | }, | ||
| 70 | { | ||
| 71 | label: "页数", | ||
| 72 | width: "80", | ||
| 73 | render: (h, scope) => { | ||
| 74 | if (scope.row.count && scope.row.count > 0) { | ||
| 75 | return ( | ||
| 76 | <div> | ||
| 77 | <span>{scope.row.count}</span> | ||
| 78 | </div> | ||
| 79 | ); | ||
| 80 | } else { | ||
| 81 | return ( | ||
| 82 | <div> | ||
| 83 | <span>0</span> | ||
| 84 | </div> | ||
| 85 | ); | ||
| 86 | } | ||
| 87 | }, | ||
| 88 | }, | ||
| 89 | { | ||
| 90 | label: "操作", | ||
| 91 | width: "100", | ||
| 92 | render: (h, scope) => { | ||
| 93 | return ( | ||
| 94 | <el-button | ||
| 95 | type="text" | ||
| 96 | icon="el-icon-delete" | ||
| 97 | disabled={scope.row.count != 0} | ||
| 98 | onClick={() => { | ||
| 99 | this.handleDelete(scope.$index, scope.row); | ||
| 100 | }} | ||
| 101 | > | ||
| 102 | 删除 | ||
| 103 | </el-button> | ||
| 104 | ) | ||
| 105 | } | ||
| 106 | } | ||
| 107 | ], | ||
| 108 | key: 0, | ||
| 109 | tableData: [] | ||
| 110 | } | ||
| 111 | }, | ||
| 112 | mounted () { | ||
| 113 | this.initSort() | ||
| 114 | this.tableData = _.cloneDeep(this.formData.data) | ||
| 115 | }, | ||
| 116 | beforeDestroy () { | ||
| 117 | if (this.sortable) { | ||
| 118 | this.sortable.destroy(); | ||
| 119 | } | ||
| 120 | }, | ||
| 121 | watch: { | ||
| 122 | 'formData.data': { | ||
| 123 | handler: function (val, oldVal) { | ||
| 124 | this.tableData = _.cloneDeep(val) | ||
| 125 | }, | ||
| 126 | immediate: true, | ||
| 127 | deep: true | ||
| 128 | } | ||
| 129 | }, | ||
| 130 | methods: { | ||
| 131 | handleCancel () { | ||
| 132 | ywPopupCacel() | ||
| 133 | }, | ||
| 134 | handleSubmit () { | ||
| 135 | this.loading = true | ||
| 136 | store.dispatch('user/reWorkFresh', false) | ||
| 137 | editCompanyMaterialList(this.tableData, this.formData.bsmCompany).then(res => { | ||
| 138 | this.loading = false | ||
| 139 | if (res.code == 200) { | ||
| 140 | this.$message({ | ||
| 141 | message: '保存成功', | ||
| 142 | type: 'success' | ||
| 143 | }) | ||
| 144 | store.dispatch('user/reWorkFresh', true) | ||
| 145 | ywPopupCacel() | ||
| 146 | } | ||
| 147 | }).catch(() => { | ||
| 148 | this.loading = false | ||
| 149 | }) | ||
| 150 | }, | ||
| 151 | /** | ||
| 152 | * @description: 材料目录删除 | ||
| 153 | * @param {*} index | ||
| 154 | * @param {*} row | ||
| 155 | * @author: renchao | ||
| 156 | */ | ||
| 157 | handleDelete (index, row) { | ||
| 158 | this.$confirm('此操作将永久删除该 是否继续?', '提示', { | ||
| 159 | confirmButtonText: '确定', | ||
| 160 | cancelButtonText: '取消', | ||
| 161 | type: 'warning' | ||
| 162 | }).then(() => { | ||
| 163 | this.tableData.splice(index, 1); | ||
| 164 | }).catch(() => { | ||
| 165 | this.$message({ | ||
| 166 | type: 'info', | ||
| 167 | message: '已取消删除' | ||
| 168 | }) | ||
| 169 | }) | ||
| 170 | }, | ||
| 171 | initSort () { | ||
| 172 | const el = this.$refs.listTable.$el.querySelectorAll('.el-table__body-wrapper > table > tbody')[0] | ||
| 173 | this.sortable = Sortable.create(el, { | ||
| 174 | ghostClass: 'sortable-ghost', | ||
| 175 | setData: function (dataTransfer) { | ||
| 176 | dataTransfer.setData('Text', '') | ||
| 177 | }, | ||
| 178 | onEnd: evt => { | ||
| 179 | const targetRow = this.tableData.splice(evt.oldIndex, 1)[0]; | ||
| 180 | this.tableData.splice(evt.newIndex, 0, targetRow); | ||
| 181 | } | ||
| 182 | }) | ||
| 183 | } | ||
| 184 | } | ||
| 185 | } | ||
| 186 | </script> | ||
| 187 | <style scoped lang='scss'> | ||
| 188 | @import "~@/styles/mixin.scss"; | ||
| 189 | .clmlmx-box { | ||
| 190 | margin: 0 auto; | ||
| 191 | .title { | ||
| 192 | text-align: center; | ||
| 193 | height: 60px; | ||
| 194 | line-height: 60px; | ||
| 195 | border: 1px solid #dfe6ec; | ||
| 196 | font-size: 20px; | ||
| 197 | background: #81d3f81a; | ||
| 198 | margin-bottom: -1px; | ||
| 199 | } | ||
| 200 | } | ||
| 201 | </style> |
| 1 | <!-- | 1 | <!-- |
| 2 | * @Description: | 2 | * @Description: |
| 3 | * @Autor: renchao | 3 | * @Autor: renchao |
| 4 | * @LastEditTime: 2023-09-14 16:24:07 | 4 | * @LastEditTime: 2023-09-19 09:55:41 |
| 5 | --> | 5 | --> |
| 6 | <template> | 6 | <template> |
| 7 | <div class="rlPopup"> | 7 | <div class="rlPopup"> |
| ... | @@ -12,9 +12,9 @@ | ... | @@ -12,9 +12,9 @@ |
| 12 | <i class="el-icon-arrow-right"></i> | 12 | <i class="el-icon-arrow-right"></i> |
| 13 | </div> | 13 | </div> |
| 14 | <div class="img-list-wrap" v-Loading="loading"> | 14 | <div class="img-list-wrap" v-Loading="loading"> |
| 15 | <img src="http://127.0.0.1:38088/video=stream&camidx=0" v-if="isScan" alt="高拍仪"> | 15 | <img src="http://127.0.0.1:38088/video=stream&camidx=0" v-if="isScan" alt=""> |
| 16 | <div v-for="(img, i) in previewImg.imgList" :key="i" v-else> | 16 | <div v-for="(img, i) in previewImg.imgList" :key="i" v-else> |
| 17 | <photo-zoom :url="img.fileurl" :bigWidth="165" v-if="i === previewImg.index" :scale="2" | 17 | <photo-zoom :url="img.fjurl" :bigWidth="165" v-if="i === previewImg.index" :scale="2" |
| 18 | overlayStyle="width: 100%;height:100%"> | 18 | overlayStyle="width: 100%;height:100%"> |
| 19 | </photo-zoom> | 19 | </photo-zoom> |
| 20 | </div> | 20 | </div> |
| ... | @@ -23,25 +23,24 @@ | ... | @@ -23,25 +23,24 @@ |
| 23 | <div class="thumb-wrap"> | 23 | <div class="thumb-wrap"> |
| 24 | <div class="thumb-wrap-button"> | 24 | <div class="thumb-wrap-button"> |
| 25 | <el-button type="primary" @click="clickImage" v-if="previewImg.imgList.length>0">(放大) 显示(缩小)</el-button> | 25 | <el-button type="primary" @click="clickImage" v-if="previewImg.imgList.length>0">(放大) 显示(缩小)</el-button> |
| 26 | <el-upload class="fileUpdate" ref="upload" :key="key" action="" :show-file-list="false" :multiple="true" :auto-upload="false" | 26 | <!-- <el-upload class="fileUpdate" ref="upload" :key="key" action="" :show-file-list="false" :multiple="true" :auto-upload="false" |
| 27 | :on-change="handleChange" | 27 | :on-change="handleChange" |
| 28 | accept=".JPG, .PNG, .JPEG,.jpg, .png, .jpeg"> | 28 | accept=".JPG, .PNG, .JPEG,.jpg, .png, .jpeg"> |
| 29 | <el-button icon="el-icon-upload" type="primary" v-if="ableOperation">上传</el-button> | 29 | <el-button icon="el-icon-upload" type="primary" v-if="ableOperation">上传</el-button> |
| 30 | </el-upload> | 30 | </el-upload> --> |
| 31 | <!-- 左移右移 --> | 31 | <!-- <el-button type="primary" @click="handleMove('left')" v-if="ableOperation">左移</el-button> |
| 32 | <el-button type="primary" @click="handleMove('left')" v-if="ableOperation">左移</el-button> | 32 | <el-button type="primary" @click="handleMove('right')" v-if="ableOperation">右移</el-button> --> |
| 33 | <el-button type="primary" @click="handleMove('right')" v-if="ableOperation">右移</el-button> | 33 | <!-- <el-button type="primary" icon="el-icon-delete-solid" @click="handleDelete" |
| 34 | <el-button type="primary" icon="el-icon-delete-solid" @click="handleDelete" | ||
| 35 | v-if="thumbnailImages.length>0 && ableOperation">删除</el-button> | 34 | v-if="thumbnailImages.length>0 && ableOperation">删除</el-button> |
| 36 | <div v-if="ableOperation" class="pl-5"> | 35 | <div v-if="ableOperation" class="pl-5"> |
| 37 | <el-button type="primary" @click="handleOpenScan" v-if="ableOperation" :loading="loading">{{scanTitle}}</el-button> | 36 | <el-button type="primary" @click="handleOpenScan" v-if="ableOperation" :loading="loading">{{scanTitle}}</el-button> |
| 38 | <el-button type="primary" @click="handleViewScan" v-if="isScan && ableOperation">拍照</el-button> | 37 | <el-button type="primary" @click="handleViewScan" v-if="isScan && ableOperation">拍照</el-button> |
| 39 | </div> | 38 | </div> --> |
| 40 | </div> | 39 | </div> |
| 41 | <ul> | 40 | <ul> |
| 42 | <li v-for="(img, index) in thumbnailImages" :key="index" :class="{ active: previewImg.index === index }" | 41 | <li v-for="(img, index) in thumbnailImages" :key="index" :class="{ active: previewImg.index === index }" |
| 43 | @click="showCurrent(index)"> | 42 | @click="showCurrent(index)"> |
| 44 | <img :src="img.fileurl"> | 43 | <img :src="img.fjurl"> |
| 45 | </li> | 44 | </li> |
| 46 | </ul> | 45 | </ul> |
| 47 | </div> | 46 | </div> |
| ... | @@ -52,8 +51,6 @@ | ... | @@ -52,8 +51,6 @@ |
| 52 | </template> | 51 | </template> |
| 53 | <script> | 52 | <script> |
| 54 | import PhotoZoom from '@/components/PhotoZoom' | 53 | import PhotoZoom from '@/components/PhotoZoom' |
| 55 | import { getAltimeterInfo, getUuid } from '@/utils/operation.js' | ||
| 56 | import { uploadBatch, deleteFile, move } from "@/api/company.js" | ||
| 57 | import publicPicture from '@/components/publicPicture/index.vue' | 54 | import publicPicture from '@/components/publicPicture/index.vue' |
| 58 | export default { | 55 | export default { |
| 59 | name: 'PreviewImage', | 56 | name: 'PreviewImage', |
| ... | @@ -94,7 +91,7 @@ | ... | @@ -94,7 +91,7 @@ |
| 94 | previewImg: { | 91 | previewImg: { |
| 95 | handler (newValue, oldValue) { | 92 | handler (newValue, oldValue) { |
| 96 | if (newValue.imgList && newValue.imgList.length > 0) { | 93 | if (newValue.imgList && newValue.imgList.length > 0) { |
| 97 | this.allLi = _.cloneDeep(newValue.imgList).map(item => item.fileurl) | 94 | this.allLi = _.cloneDeep(newValue.imgList).map(item => item.fjurl) |
| 98 | this.thumbnailImages = newValue.imgList | 95 | this.thumbnailImages = newValue.imgList |
| 99 | } else { | 96 | } else { |
| 100 | this.allLi = [] | 97 | this.allLi = [] |
| ... | @@ -119,99 +116,6 @@ | ... | @@ -119,99 +116,6 @@ |
| 119 | } | 116 | } |
| 120 | }, | 117 | }, |
| 121 | methods: { | 118 | methods: { |
| 122 | /** | ||
| 123 | * @description: 打开高拍仪 | ||
| 124 | * @author: renchao | ||
| 125 | */ | ||
| 126 | handleOpenScan () { | ||
| 127 | this.isScan = !this.isScan | ||
| 128 | if (this.isScan) { | ||
| 129 | this.loading = true | ||
| 130 | this.$message({ | ||
| 131 | message: '正在启动程序请稍等', | ||
| 132 | type: 'success' | ||
| 133 | }) | ||
| 134 | setTimeout(() => { | ||
| 135 | this.scanTitle = '关闭高拍仪' | ||
| 136 | this.loading = false | ||
| 137 | }, 3000) | ||
| 138 | } else { | ||
| 139 | this.scanTitle = '打开高拍仪' | ||
| 140 | } | ||
| 141 | }, | ||
| 142 | /** | ||
| 143 | * @description: 左右移动 | ||
| 144 | * @param {*} direction | ||
| 145 | * @author: renchao | ||
| 146 | */ | ||
| 147 | handleMove (direction) { | ||
| 148 | move(this.previewImg.imgList[this.previewImg.index].bsmFile, direction).then(res => { | ||
| 149 | if (res.code == 200) { | ||
| 150 | if (direction == 'left') { | ||
| 151 | this.previewImg.index = this.previewImg.index - 1 | ||
| 152 | } else { | ||
| 153 | this.previewImg.index = this.previewImg.index + 1 | ||
| 154 | } | ||
| 155 | this.initialIndex = this.previewImg.index | ||
| 156 | this.$emit('updateList', { children: res.result, bsmMaterial: this.previewImg.bsmMaterial }) | ||
| 157 | this.$message({ | ||
| 158 | message: '移动成功!', | ||
| 159 | type: 'success' | ||
| 160 | }) | ||
| 161 | } else { | ||
| 162 | this.$message.error(res.message); | ||
| 163 | } | ||
| 164 | }) | ||
| 165 | }, | ||
| 166 | /** | ||
| 167 | * @description: 拍照 | ||
| 168 | * @author: renchao | ||
| 169 | */ | ||
| 170 | handleViewScan () { | ||
| 171 | function dataURLtoBlob (base64String) { | ||
| 172 | const arr = base64String.split(','); | ||
| 173 | if (arr.length !== 2) { | ||
| 174 | throw new Error('Invalid Base64 format'); | ||
| 175 | } | ||
| 176 | const mime = arr[0].match(/:(.*?);/)[1]; | ||
| 177 | if (!mime) { | ||
| 178 | throw new Error('Cannot retrieve MIME type'); | ||
| 179 | } | ||
| 180 | const bstr = atob(arr[1]); | ||
| 181 | const n = bstr.length; | ||
| 182 | const u8arr = new Uint8Array(n); | ||
| 183 | for (let i = 0; i < n; i++) { | ||
| 184 | u8arr[i] = bstr.charCodeAt(i); | ||
| 185 | } | ||
| 186 | return new Blob([u8arr], { type: mime }); | ||
| 187 | } | ||
| 188 | function blobToFile (blob) { | ||
| 189 | let name = getUuid(8) + '.jpg' | ||
| 190 | const file = new File([blob], name); | ||
| 191 | return file; | ||
| 192 | } | ||
| 193 | getAltimeterInfo().then(res => { | ||
| 194 | let blob = dataURLtoBlob('data:image/png;base64,' + res.data.photoBase64); | ||
| 195 | let file = blobToFile(blob); | ||
| 196 | var formData = new FormData(); | ||
| 197 | formData.append('file', file) | ||
| 198 | formData.append("bsmMaterial ", this.previewImg.bsmMaterial); | ||
| 199 | formData.append("bsmSlsq", this.previewImg.bsmSlsq); | ||
| 200 | uploadSjClmx(formData).then((res) => { | ||
| 201 | if (res.code == 200) { | ||
| 202 | this.$emit('updateList', res.result) | ||
| 203 | this.$message({ | ||
| 204 | message: '上传成功!', | ||
| 205 | type: 'success' | ||
| 206 | }) | ||
| 207 | } | ||
| 208 | }) | ||
| 209 | }) | ||
| 210 | }, | ||
| 211 | /** | ||
| 212 | * @description: prev | ||
| 213 | * @author: renchao | ||
| 214 | */ | ||
| 215 | prev () { | 119 | prev () { |
| 216 | let len = this.previewImg.imgList.length | 120 | let len = this.previewImg.imgList.length |
| 217 | if (this.isFirst || len == 0) { | 121 | if (this.isFirst || len == 0) { |
| ... | @@ -254,90 +158,6 @@ | ... | @@ -254,90 +158,6 @@ |
| 254 | */ | 158 | */ |
| 255 | clickImage () { | 159 | clickImage () { |
| 256 | this.showViewer = true | 160 | this.showViewer = true |
| 257 | }, | ||
| 258 | /** | ||
| 259 | * @description: handleChange | ||
| 260 | * @param {*} file | ||
| 261 | * @param {*} files | ||
| 262 | * @author: renchao | ||
| 263 | */ | ||
| 264 | async handleChange (file, fileList) { | ||
| 265 | let length = fileList.length; | ||
| 266 | this.maxFileLength = Math.max(length, this.maxFileLength) | ||
| 267 | var formData = new FormData(); | ||
| 268 | setTimeout(() => { | ||
| 269 | if (this.maxFileLength !== length) { | ||
| 270 | return | ||
| 271 | } | ||
| 272 | let num = 0, max = 0; | ||
| 273 | const isLt5M = file.size / 1024 / 1024 < 5; | ||
| 274 | fileList.forEach(item => { | ||
| 275 | if (!isLt5M) { | ||
| 276 | max++ | ||
| 277 | } | ||
| 278 | if (!['image/jpeg', 'image/png', 'image/jpg', 'image/gif'].includes(item.raw.type)) { | ||
| 279 | num++ | ||
| 280 | } else { | ||
| 281 | formData.append('file', item.raw) | ||
| 282 | } | ||
| 283 | }) | ||
| 284 | if (num >= 1) { | ||
| 285 | this.$message.error("请选择jpeg/png/jpg/bmp/gif格式的图片后重试") | ||
| 286 | // 移除不支持的文件类型 | ||
| 287 | this.key++ | ||
| 288 | return; | ||
| 289 | } | ||
| 290 | if (max >= 1) { | ||
| 291 | this.$message.error('上传图片大小不能超过 5MB!'); | ||
| 292 | this.key++ | ||
| 293 | return; | ||
| 294 | } | ||
| 295 | formData.append("bsmMaterial", this.previewImg.bsmMaterial); | ||
| 296 | if (this.previewImg.imgList.length > 0) { | ||
| 297 | formData.append("index", this.previewImg.imgList[this.previewImg.index].sxh); | ||
| 298 | } | ||
| 299 | uploadBatch(formData).then((res) => { | ||
| 300 | if (res.code == 200) { | ||
| 301 | this.$emit('updateList', { children: res.result, bsmMaterial: this.previewImg.bsmMaterial }) | ||
| 302 | this.$message({ | ||
| 303 | message: '上传成功!', | ||
| 304 | type: 'success' | ||
| 305 | }) | ||
| 306 | this.$refs.upload.clearFiles(); | ||
| 307 | this.maxFileLength = 0 | ||
| 308 | } | ||
| 309 | }) | ||
| 310 | }, 0) | ||
| 311 | }, | ||
| 312 | /** | ||
| 313 | * @description: handleDelete | ||
| 314 | * @author: renchao | ||
| 315 | */ | ||
| 316 | handleDelete () { | ||
| 317 | let that = this | ||
| 318 | this.$confirm('此操作将永久删除, 是否继续?', '提示', { | ||
| 319 | confirmButtonText: '确定', | ||
| 320 | cancelButtonText: '取消', | ||
| 321 | type: 'warning' | ||
| 322 | }).then(async () => { | ||
| 323 | let bsmFile = this.previewImg.imgList[this.previewImg.index].bsmFile | ||
| 324 | let bsmMaterial = this.previewImg.imgList[this.previewImg.index].bsmMaterial | ||
| 325 | this.previewImg.imgList = this.previewImg.imgList.filter(item => item.bsmFile != bsmFile) | ||
| 326 | deleteFile(bsmFile).then(res => { | ||
| 327 | if (res.code == 200) { | ||
| 328 | that.$emit('updateList', { children: this.previewImg.imgList, bsmMaterial: bsmMaterial }) | ||
| 329 | that.$message({ | ||
| 330 | message: '删除成功!', | ||
| 331 | type: 'success' | ||
| 332 | }) | ||
| 333 | } | ||
| 334 | }) | ||
| 335 | }).catch(() => { | ||
| 336 | this.$message({ | ||
| 337 | type: 'info', | ||
| 338 | message: '已取消删除' | ||
| 339 | }) | ||
| 340 | }) | ||
| 341 | } | 161 | } |
| 342 | } | 162 | } |
| 343 | } | 163 | } |
| ... | @@ -378,14 +198,14 @@ | ... | @@ -378,14 +198,14 @@ |
| 378 | } | 198 | } |
| 379 | 199 | ||
| 380 | .next { | 200 | .next { |
| 381 | right: 1%; | 201 | right: 5%; |
| 382 | } | 202 | } |
| 383 | 203 | ||
| 384 | .img-list-wrap { | 204 | .img-list-wrap { |
| 385 | width: 100%; | 205 | width: calc(100% - 30px); |
| 386 | display: flex; | 206 | display: flex; |
| 387 | justify-content: center; | 207 | justify-content: center; |
| 388 | height: calc(100% - 80px); | 208 | height: calc(100% - 150px); |
| 389 | align-items: center; | 209 | align-items: center; |
| 390 | background: rgba(194, 190, 190, 0.1); | 210 | background: rgba(194, 190, 190, 0.1); |
| 391 | overflow: scroll; | 211 | overflow: scroll; | ... | ... |
This diff is collapsed.
Click to expand it.
| 1 | <!-- | 1 | <!-- |
| 2 | * @Description: | 2 | * @Description: |
| 3 | * @Autor: renchao | 3 | * @Autor: renchao |
| 4 | * @LastEditTime: 2023-09-18 16:28:16 | 4 | * @LastEditTime: 2023-09-18 17:22:36 |
| 5 | --> | 5 | --> |
| 6 | <template> | 6 | <template> |
| 7 | <div class="clxx"> | 7 | <div class="clxx"> |
| ... | @@ -261,6 +261,7 @@ | ... | @@ -261,6 +261,7 @@ |
| 261 | smzt: "", | 261 | smzt: "", |
| 262 | ys: 0, | 262 | ys: 0, |
| 263 | sjlx: data.cllx, | 263 | sjlx: data.cllx, |
| 264 | sjbm: data.clbm, | ||
| 264 | sfxjcl: "1", // 是否必选 | 265 | sfxjcl: "1", // 是否必选 |
| 265 | sfggcl: data.sfggcl, | 266 | sfggcl: data.sfggcl, |
| 266 | }; | 267 | }; | ... | ... |
| 1 | <!-- | 1 | <!-- |
| 2 | * @Description: | 2 | * @Description: |
| 3 | * @Autor: renchao | 3 | * @Autor: renchao |
| 4 | * @LastEditTime: 2023-09-15 10:04:28 | 4 | * @LastEditTime: 2023-09-18 17:21:36 |
| 5 | --> | 5 | --> |
| 6 | <template> | 6 | <template> |
| 7 | <div class="clmlmx-box"> | 7 | <div class="clmlmx-box"> |
| ... | @@ -64,6 +64,15 @@ | ... | @@ -64,6 +64,15 @@ |
| 64 | } | 64 | } |
| 65 | }, | 65 | }, |
| 66 | { | 66 | { |
| 67 | label: "材料编码", | ||
| 68 | render: (h, scope) => { | ||
| 69 | return ( | ||
| 70 | (this.formData.ableOperation && scope.row.sfxjcl == '1') ? | ||
| 71 | <el-input value={scope.row.sjbm} onInput={(val) => { scope.row.sjbm = val }}></el-input> : <span>{scope.row.sjbm}</span> | ||
| 72 | ) | ||
| 73 | } | ||
| 74 | }, | ||
| 75 | { | ||
| 67 | label: "材料类型", | 76 | label: "材料类型", |
| 68 | width: "110", | 77 | width: "110", |
| 69 | render: (h, scope) => { | 78 | render: (h, scope) => { | ... | ... |
-
Please register or sign in to post a comment