Compare commits
	
		
			7 Commits
		
	
	
		
			9aed740388
			...
			devops
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 8b72cc93a0 | ||
|  | 6819b17126 | ||
|  | d9a35f0081 | ||
|  | 4b26e6f5d0 | ||
|  | ebb28ed676 | ||
|  | a059d2bd57 | ||
|  | fde372007f | 
| @@ -1,5 +1,6 @@ | ||||
| <script> | ||||
| import {mapState} from "vuex" | ||||
| import { mapState } from "vuex" | ||||
| import AiAudit from "../components/AiAudit.vue"; | ||||
|  | ||||
| export default { | ||||
|   name: "deathAdd", | ||||
| @@ -10,9 +11,10 @@ export default { | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       detail: {detailList: []} | ||||
|       detail: { detailList: [] } | ||||
|     } | ||||
|   }, | ||||
|   components:{AiAudit}, | ||||
|   computed: { | ||||
|     ...mapState(["user"]), | ||||
|     userinfo: v => v.user.info || {}, | ||||
| @@ -22,10 +24,10 @@ export default { | ||||
|     }, | ||||
|     isAudit: v => v.$route.hash == "#audit", | ||||
|     formImages: v => [ | ||||
|       {label: "身长测量照片", prop: "heightPic"}, | ||||
|       {label: "生物芯片照片", prop: "biochipPic"}, | ||||
|       {label: "防疫耳标照片", prop: "preventionPic"}, | ||||
|       {label: "其他说明照片", prop: "otherPic"}, | ||||
|       { label: "身长测量照片", prop: "heightPic" }, | ||||
|       { label: "生物芯片照片", prop: "biochipPic" }, | ||||
|       { label: "防疫耳标照片", prop: "preventionPic" }, | ||||
|       { label: "其他说明照片", prop: "otherPic" }, | ||||
|     ], | ||||
|   }, | ||||
|   methods: { | ||||
| @@ -33,22 +35,22 @@ export default { | ||||
|       this.$router.push(params) | ||||
|     }, | ||||
|     getDetail() { | ||||
|       const {id} = this.$route.query | ||||
|       return id && this.instance.post("/api/breed/death/getAuditPage", null, {params: {id}}).then(res => { | ||||
|         if (res?.data) { | ||||
|           const detail = res.data || {} | ||||
|       const { id } = this.$route.query | ||||
|       return id && this.instance.post("/api/breed/death/getAuditPage", { id }).then(res => { | ||||
|         if (res?.data?.records?.[0]) { | ||||
|           const detail = res.data.records[0] || {} | ||||
|           if (detail.picture) { | ||||
|             Object.entries(JSON.parse(detail.picture)).forEach(([key, value]) => { | ||||
|               detail[key] = value | ||||
|             }) | ||||
|           } | ||||
|           return this.detail = {...detail} | ||||
|           return this.detail = { ...detail } | ||||
|         } | ||||
|       }) | ||||
|     }, | ||||
|     submit() { | ||||
|       this.$refs.detail.validate().then(() => { | ||||
|         this.instance.post("/api/breed/death/audit", {...this.detail}).then(res => { | ||||
|         this.instance.post("/api/breed/death/audit", { ...this.detail }).then(res => { | ||||
|           if (res?.code == '0') { | ||||
|             this.$message.success("提交成功!") | ||||
|             this.back() | ||||
| @@ -69,55 +71,55 @@ export default { | ||||
|       <ai-card title="基础信息"> | ||||
|         <div class="grid c-4"> | ||||
|           <el-form-item label="生物芯片耳标号" class="row"> | ||||
|             <b v-text="detail.biochipEarNumber"/> | ||||
|             <b v-text="detail.biochipEarNumber" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="养殖场" prop="farmId"> | ||||
|             <b v-text="detail.farmName"/> | ||||
|             <b v-text="detail.farmName" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="养殖舍" prop="houseId"> | ||||
|             <b v-text="detail.houseName"/> | ||||
|             <b v-text="detail.houseName" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="养殖栏" prop="penId"> | ||||
|             <b v-text="detail.penName"/> | ||||
|             <b v-text="detail.penName" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="电子耳标号" prop="electronicEarNumber"> | ||||
|             <b v-text="detail.electronicEarNumber"/> | ||||
|             <b v-text="detail.electronicEarNumber" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="原厂耳标号" prop="category"> | ||||
|             <b v-text="detail.originalEarNumber"/> | ||||
|             <b v-text="detail.originalEarNumber" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="类别" prop="category"> | ||||
|             <b v-text="detail.category"/> | ||||
|             <b v-text="dict.getLabel('category', detail.category)" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="品种" prop="variety"> | ||||
|             <b v-text="detail.variety"/> | ||||
|             <b v-text="dict.getLabel('variety', detail.variety)" /> | ||||
|           </el-form-item> | ||||
|           <div class="row flex"> | ||||
|             <el-form-item v-for="(img,i) in formImages" :key="i" v-bind="img"> | ||||
|               <ai-uploader v-model="detail[img.prop]" value-is-url readonly/> | ||||
|             <el-form-item v-for="(img, i) in formImages" :key="i" v-bind="img"> | ||||
|               <ai-uploader v-model="detail[img.prop]" value-is-url readonly /> | ||||
|             </el-form-item> | ||||
|           </div> | ||||
|         </div> | ||||
|       </ai-card> | ||||
|       <ai-card title="死亡信息"> | ||||
|         <el-form-item label="死亡原因"> | ||||
|           <b v-text="dict.getLabel('deathReason',detail.reason)"/> | ||||
|           <b v-text="dict.getLabel('deathReason', detail.reason)" /> | ||||
|         </el-form-item> | ||||
|         <el-form-item label="死亡日期"> | ||||
|           <b v-text="detail.deathTime"/> | ||||
|           <b v-text="detail.deathTime" /> | ||||
|         </el-form-item> | ||||
|         <el-form-item label="备注"> | ||||
|           <b v-text="detail.remark"/> | ||||
|           <b v-text="detail.remark" /> | ||||
|         </el-form-item> | ||||
|       </ai-card> | ||||
|       <ai-card title="审核信息"> | ||||
|         <div class="grid"> | ||||
|           <template v-if="isAudit"> | ||||
|             <el-form-item label="审批状态" prop="auditStatus" :rules="{required:true,message:'请选择审批状态'}"> | ||||
|               <ai-select v-model="detail.auditStatus" dict="auditStatus"/> | ||||
|             <el-form-item label="审批状态" prop="auditStatus" :rules="{ required: true, message: '请选择审批状态' }"> | ||||
|               <ai-audit @change="v => $set(detail, 'auditStatus', v)" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="意见"> | ||||
|               <ai-input type="textarea" :rows="3" v-model="detail.remark"/> | ||||
|               <ai-input type="textarea" :rows="3" v-model="detail.remark" /> | ||||
|             </el-form-item> | ||||
|           </template> | ||||
|           <template v-else> | ||||
|   | ||||
| @@ -73,6 +73,7 @@ export default { | ||||
|     }, | ||||
|     submit() { | ||||
|       this.$refs.detail.validate().then(() => { | ||||
|         const earNumberList = this.detail.detailList.map(e => e.biochipEarNumber) | ||||
|         const farmPicture = {} | ||||
|         this.formImages.forEach(e => { | ||||
|           const { prop } = e | ||||
| @@ -82,7 +83,7 @@ export default { | ||||
|           } | ||||
|         }) | ||||
|         this.detail.farmPicture = JSON.stringify(farmPicture) | ||||
|         this.instance.post("/api/insurance/apply/addOrEditOffline", this.detail).then(res => { | ||||
|         this.instance.post("/api/insurance/apply/addOrEditOffline", { ...this.detail, earNumberList }).then(res => { | ||||
|           if (res?.code == 0) { | ||||
|             this.$message.success("提交成功!") | ||||
|             this.back() | ||||
|   | ||||
| @@ -1,16 +1,16 @@ | ||||
| <script> | ||||
| import {mapState} from "vuex" | ||||
| import { mapState } from "vuex" | ||||
| import AiEartagPicker from "@project/xumu/components/AiEartagPicker.vue"; | ||||
|  | ||||
| const columns = [ | ||||
|   {label: "序号", type: "index"}, | ||||
|   {label: "生物芯片耳标号", prop: "biochipEarNumber"}, | ||||
|   {label: "类别", prop: "category", dict: "category"}, | ||||
|   {label: "品种", prop: "variety", dict: "variety"}, | ||||
|   { label: "序号", type: "index" }, | ||||
|   { label: "生物芯片耳标号", prop: "biochipEarNumber" }, | ||||
|   { label: "类别", prop: "category", dict: "category" }, | ||||
|   { label: "品种", prop: "variety", dict: "variety" }, | ||||
| ] | ||||
| export default { | ||||
|   name: "loanAdd", | ||||
|   components: {AiEartagPicker}, | ||||
|   components: { AiEartagPicker }, | ||||
|   props: { | ||||
|     instance: Function, | ||||
|     permissions: Function, | ||||
| @@ -18,7 +18,7 @@ export default { | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       detail: {detailList: [], loanAmount: 0}, | ||||
|       detail: { detailList: [], loanAmount: 0 }, | ||||
|       columns, | ||||
|       bankList: [], | ||||
|       filterText: "" | ||||
| @@ -34,11 +34,11 @@ export default { | ||||
|     isAdd: v => !v.$route.query.id, | ||||
|     isEdit: v => v.$route.query.edit == 1, | ||||
|     formImages: v => [ | ||||
|       {label: "身份证(正面)", prop: "frontCard", rules: {required: v.isAdd || v.isEdit, message: '请上传 身份证(正面)'}}, | ||||
|       {label: "身份证(反面)", prop: "reverseCard", rules: {required: v.isAdd || v.isEdit, message: '请上传 身份证(反面)'}}, | ||||
|       {label: "营业执照", prop: "businessPic", rules: {required: v.isAdd || v.isEdit, message: '请上传 营业执照'}}, | ||||
|       {label: "畜禽经营许可证", prop: "breedPic", rules: {required: v.isAdd || v.isEdit, message: '请上传 畜禽经营许可证'}}, | ||||
|       {label: "动物防疫条件许可证", prop: "prevention", rules: {required: v.isAdd || v.isEdit, message: '请上传 动物防疫条件许可证'}}, | ||||
|       { label: "身份证(正面)", prop: "frontCard", rules: { required: v.isAdd || v.isEdit, message: '请上传 身份证(正面)' } }, | ||||
|       { label: "身份证(反面)", prop: "reverseCard", rules: { required: v.isAdd || v.isEdit, message: '请上传 身份证(反面)' } }, | ||||
|       { label: "营业执照", prop: "businessPic", rules: { required: v.isAdd || v.isEdit, message: '请上传 营业执照' } }, | ||||
|       { label: "畜禽经营许可证", prop: "breedPic", rules: { required: v.isAdd || v.isEdit, message: '请上传 畜禽经营许可证' } }, | ||||
|       { label: "动物防疫条件许可证", prop: "prevention", rules: { required: v.isAdd || v.isEdit, message: '请上传 动物防疫条件许可证' } }, | ||||
|     ], | ||||
|     selectedEartags: v => v.detail.detailList?.length || 0, | ||||
|     tableData: v => v.detail.detailList?.filter(e => e.biochipEarNumber.indexOf(v.filterText) > -1) || [], | ||||
| @@ -48,14 +48,14 @@ export default { | ||||
|       this.$router.push(params) | ||||
|     }, | ||||
|     getDetail() { | ||||
|       const {id} = this.$route.query | ||||
|       return id && this.instance.post("/api/loan/apply/getInfo", null, {params: {id}}).then(res => { | ||||
|       const { id } = this.$route.query | ||||
|       return id && this.instance.post("/api/loan/apply/getInfo", null, { params: { id } }).then(res => { | ||||
|         if (res?.data) { | ||||
|           const detail = res.data | ||||
|           detail.detailList = detail.detailList || [] | ||||
|           let {farmPicture: picture = "{}"} = detail | ||||
|           let { farmPicture: picture = "{}" } = detail | ||||
|           picture = JSON.parse(picture) | ||||
|           return this.detail = {...detail, ...picture} | ||||
|           return this.detail = { ...detail, ...picture } | ||||
|         } | ||||
|       }) | ||||
|     }, | ||||
| @@ -75,14 +75,14 @@ export default { | ||||
|         const earNumberList = this.detail.detailList.map(e => e.biochipEarNumber) | ||||
|         const farmPicture = {} | ||||
|         this.formImages.forEach(e => { | ||||
|           const {prop} = e | ||||
|           const { prop } = e | ||||
|           const val = this.detail[prop] | ||||
|           if (val) { | ||||
|             farmPicture[prop] = val | ||||
|           } | ||||
|         }) | ||||
|         this.detail.farmPicture = JSON.stringify(farmPicture) | ||||
|         this.instance.post("/api/loan/apply/addOrEdit", {...this.detail, submitType}).then(res => { | ||||
|         this.instance.post("/api/loan/apply/addOrEdit", { ...this.detail, submitType, earNumberList }).then(res => { | ||||
|           if (res?.code == '0') { | ||||
|             this.$message.success("提交成功!") | ||||
|             this.back() | ||||
| @@ -103,63 +103,64 @@ export default { | ||||
|     <el-form size="small" label-width="120px" :model="detail" ref="detail"> | ||||
|       <ai-card title="基础信息"> | ||||
|         <div class="grid"> | ||||
|           <el-form-item label="养殖场" prop="farmId" :rules="{required: isAdd||isEdit,message:'请选择 养殖场'}"> | ||||
|             <ai-select v-if="isAdd||isEdit" v-model="detail.farmId" :instance="instance" :action="`/api/siteUser/querySiteByUserId?userId=${userinfo.id}`" :prop="{label:'name'}"/> | ||||
|             <b v-else v-text="detail.farmName"/> | ||||
|           <el-form-item label="养殖场" prop="farmId" :rules="{ required: isAdd || isEdit, message: '请选择 养殖场' }"> | ||||
|             <ai-select v-if="isAdd || isEdit" v-model="detail.farmId" :instance="instance" | ||||
|               :action="`/api/siteUser/querySiteByUserId?userId=${userinfo.id}`" :prop="{ label: 'name' }" /> | ||||
|             <b v-else v-text="detail.farmName" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="贷款银行" prop="bankId" :rules="{required: isAdd||isEdit,message:'请选择 贷款银行'}"> | ||||
|             <ai-select v-if="isAdd||isEdit" v-model="detail.bankId" :select-list="bankList" :prop="{label:'name'}"/> | ||||
|             <b v-else v-text="detail.bankName"/> | ||||
|           <el-form-item label="贷款银行" prop="bankId" :rules="{ required: isAdd || isEdit, message: '请选择 贷款银行' }"> | ||||
|             <ai-select v-if="isAdd || isEdit" v-model="detail.bankId" :select-list="bankList" :prop="{ label: 'name' }" /> | ||||
|             <b v-else v-text="detail.bankName" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="贷款产品" prop="productType" :rules="{required: isAdd||isEdit,message:'请选择 贷款产品'}"> | ||||
|             <ai-select v-if="isAdd||isEdit" v-model="detail.productType" | ||||
|                        :select-list="getProducts(detail.bankId)" :prop="{label:'name',value:'productType'}"/> | ||||
|             <b v-else v-text="dict.getLabel('loanProduct',detail.productType)"/> | ||||
|           <el-form-item label="贷款产品" prop="productType" :rules="{ required: isAdd || isEdit, message: '请选择 贷款产品' }"> | ||||
|             <ai-select v-if="isAdd || isEdit" v-model="detail.productType" :select-list="getProducts(detail.bankId)" | ||||
|               :prop="{ label: 'name', value: 'productType' }" /> | ||||
|             <b v-else v-text="dict.getLabel('loanProduct', detail.productType)" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="预期贷款额(万)" prop="loanAmount" :rules="{required: isAdd||isEdit,message:'请输入 预期贷款额'}"> | ||||
|             <ai-input v-model.number="detail.loanAmount" :edit="isAdd||isEdit"/> | ||||
|           <el-form-item label="预期贷款额(万)" prop="loanAmount" :rules="{ required: isAdd || isEdit, message: '请输入 预期贷款额' }"> | ||||
|             <ai-input v-model.number="detail.loanAmount" :edit="isAdd || isEdit" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="联系人" prop="contacts" :rules="{required: isAdd||isEdit,message:'请输入 联系人'}"> | ||||
|             <ai-input v-model="detail.contacts" :edit="isAdd||isEdit"/> | ||||
|           <el-form-item label="联系人" prop="contacts" :rules="{ required: isAdd || isEdit, message: '请输入 联系人' }"> | ||||
|             <ai-input v-model="detail.contacts" :edit="isAdd || isEdit" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="联系电话" prop="phone" :rules="{required: isAdd||isEdit,message:'请输入 联系电话'}"> | ||||
|             <ai-input v-model="detail.phone" :edit="isAdd||isEdit"/> | ||||
|           <el-form-item label="联系电话" prop="phone" :rules="{ required: isAdd || isEdit, message: '请输入 联系电话' }"> | ||||
|             <ai-input v-model="detail.phone" :edit="isAdd || isEdit" /> | ||||
|           </el-form-item> | ||||
|         </div> | ||||
|       </ai-card> | ||||
|       <ai-card title="质押标的"> | ||||
|         <template #right> | ||||
|           <ai-input placeholder="请输入/扫描耳标号" v-model="filterText" class="shrink"/> | ||||
|           <ai-eartag-picker @select="v=>detail.detailList=v" :instance="instance" v-if="isAdd||isEdit" value-key="biochipEarNumber" | ||||
|                             :action="`/api/insurance/apply/getEarNumberList?farmId=${detail.farmId}`"> | ||||
|           <ai-input placeholder="请输入/扫描耳标号" v-model="filterText" class="shrink" /> | ||||
|           <ai-eartag-picker @select="v => detail.detailList = v" :instance="instance" v-if="isAdd || isEdit" | ||||
|             value-key="biochipEarNumber" :action="`/api/insurance/apply/getEarNumberList?farmId=${detail.farmId}`"> | ||||
|             <el-button type="text">选择</el-button> | ||||
|           </ai-eartag-picker> | ||||
|         </template> | ||||
|         <ai-highlight class="mar-b8 font-14" :content="`拟抵押标的选择 @v 只`" color="red" :value="selectedEartags"/> | ||||
|         <ai-table :tableData="tableData" :colConfigs="columns" :isShowPagination="!1" hideOptions/> | ||||
|         <ai-highlight class="mar-b8 font-14" :content="`拟抵押标的选择 @v 只`" color="red" :value="selectedEartags" /> | ||||
|         <ai-table :tableData="tableData" :colConfigs="columns" :isShowPagination="!1" hideOptions /> | ||||
|       </ai-card> | ||||
|       <ai-card title="证件信息"> | ||||
|         <div v-if="isAdd||isEdit" class="font-12 color-888">只能上传JPG/PNG文件,且不超过2M</div> | ||||
|         <div v-if="isAdd || isEdit" class="font-12 color-888">只能上传JPG/PNG文件,且不超过2M</div> | ||||
|         <div class="grid c-5 el-form--label-top"> | ||||
|           <el-form-item v-for="(img,i) in formImages" :key="i" v-bind="img"> | ||||
|             <ai-uploader v-if="isAdd||isEdit" v-model="detail[img.prop]" :instance="instance" :limit="1" value-is-url/> | ||||
|             <el-image :src="detail[img.prop]" :preview-src-list="[detail[img.prop]]" v-else/> | ||||
|           <el-form-item v-for="(img, i) in formImages" :key="i" v-bind="img"> | ||||
|             <ai-uploader v-if="isAdd || isEdit" v-model="detail[img.prop]" :instance="instance" :limit="1" value-is-url /> | ||||
|             <el-image :src="detail[img.prop]" :preview-src-list="[detail[img.prop]]" v-else /> | ||||
|           </el-form-item> | ||||
|         </div> | ||||
|       </ai-card> | ||||
|       <ai-card title="审核信息" v-if="!(isAdd||isEdit)"> | ||||
|       <ai-card title="审核信息" v-if="!(isAdd || isEdit)"> | ||||
|         <el-form-item label="审核状态">{{ dict.getLabel('auditStatus', detail.auditStatus) }}</el-form-item> | ||||
|         <el-form-item label="审核时间">{{ detail.auditTime }}</el-form-item> | ||||
|         <el-form-item label="审核人">{{ detail.auditName }}</el-form-item> | ||||
|         <el-form-item label="贷款合同号">{{ detail.contractNo || "-" }}</el-form-item> | ||||
|         <el-form-item label="贷款资料"> | ||||
|           <el-image :src="detail.picture" :preview-src-list="[detail.picture]"/> | ||||
|           <el-image :src="detail.picture" :preview-src-list="[detail.picture]" /> | ||||
|         </el-form-item> | ||||
|         <el-form-item label="说明">{{ detail.remarks }}</el-form-item> | ||||
|       </ai-card> | ||||
|     </el-form> | ||||
|     <div slot="footer"> | ||||
|       <template v-if="isAdd||isEdit"> | ||||
|       <template v-if="isAdd || isEdit"> | ||||
|         <el-button type="primary" @click="submit(1)">保存草稿</el-button> | ||||
|         <el-button type="primary" @click="submit(2)">保存并提交</el-button> | ||||
|       </template> | ||||
|   | ||||
| @@ -1,5 +1,6 @@ | ||||
| <script> | ||||
| import {mapState} from "vuex" | ||||
| import { mapState } from "vuex" | ||||
| import AiAudit from "../components/AiAudit.vue"; | ||||
|  | ||||
| export default { | ||||
|   name: "oaAdd", | ||||
| @@ -8,9 +9,10 @@ export default { | ||||
|     permissions: Function, | ||||
|     dict: Object | ||||
|   }, | ||||
|   components:{AiAudit}, | ||||
|   data() { | ||||
|     return { | ||||
|       detail: {detailList: []} | ||||
|       detail: { detailList: [] } | ||||
|     } | ||||
|   }, | ||||
|   computed: { | ||||
| @@ -22,17 +24,17 @@ export default { | ||||
|     }, | ||||
|     isAudit: v => v.$route.hash == "#audit", | ||||
|     formImages: v => [ | ||||
|       {label: "身长测量照片", prop: "heightPic"}, | ||||
|       {label: "生物芯片照片", prop: "biochipPic"}, | ||||
|       {label: "防疫耳标照片", prop: "preventionPic"}, | ||||
|       {label: "其他说明照片", prop: "otherPic"}, | ||||
|       { label: "身长测量照片", prop: "heightPic" }, | ||||
|       { label: "生物芯片照片", prop: "biochipPic" }, | ||||
|       { label: "防疫耳标照片", prop: "preventionPic" }, | ||||
|       { label: "其他说明照片", prop: "otherPic" }, | ||||
|     ], | ||||
|     columns: v => [ | ||||
|       {label: "序号", type: "index"}, | ||||
|       {label: "生物芯片耳标号", prop: "biochipEarNumber"}, | ||||
|       {label: "身长测量照片", prop: "heightPicture", upload: {instance: v.instance, readonly: !0, valueIsUrl: !0, limit: 1}}, | ||||
|       {label: "电子耳标照片", prop: "earNumberPicture", upload: {instance: v.instance, readonly: !0, valueIsUrl: !0, limit: 1}}, | ||||
|       {label: "防疫耳标照片", prop: "preventionPicture", upload: {instance: v.instance, readonly: !0, valueIsUrl: !0, limit: 1}}, | ||||
|       { label: "序号", type: "index" }, | ||||
|       { label: "生物芯片耳标号", prop: "biochipEarNumber" }, | ||||
|       { label: "身长测量照片", prop: "heightPicture", upload: { instance: v.instance, readonly: !0, valueIsUrl: !0, limit: 1 } }, | ||||
|       { label: "电子耳标照片", prop: "earNumberPicture", upload: { instance: v.instance, readonly: !0, valueIsUrl: !0, limit: 1 } }, | ||||
|       { label: "防疫耳标照片", prop: "preventionPicture", upload: { instance: v.instance, readonly: !0, valueIsUrl: !0, limit: 1 } }, | ||||
|     ].filter(e => !e.hide), | ||||
|   }, | ||||
|   methods: { | ||||
| @@ -40,17 +42,17 @@ export default { | ||||
|       this.$router.push(params) | ||||
|     }, | ||||
|     getDetail() { | ||||
|       const {id} = this.$route.query | ||||
|       return id && this.instance.post("/api/breed/out/getAuditPage", null, {params: {id}}).then(res => { | ||||
|         if (res?.data) { | ||||
|           const detail = res.data | ||||
|           return this.detail = {...detail} | ||||
|       const { id } = this.$route.query | ||||
|       return id && this.instance.post("/api/breed/out/getAuditPage", { id }).then(res => { | ||||
|         if (res?.data?.records?.[0]) { | ||||
|           const detail = res.data.records[0] || {} | ||||
|           return this.detail = { ...detail } | ||||
|         } | ||||
|       }) | ||||
|     }, | ||||
|     submit() { | ||||
|       this.$refs.detail.validate().then(() => { | ||||
|         this.instance.post("/api/breed/out/audit", {...this.detail}).then(res => { | ||||
|         this.instance.post("/api/breed/out/audit", { ...this.detail }).then(res => { | ||||
|           if (res?.code == '0') { | ||||
|             this.$message.success("提交成功!") | ||||
|             this.back() | ||||
| @@ -71,55 +73,55 @@ export default { | ||||
|       <ai-card title="基础信息"> | ||||
|         <div class="grid c-4"> | ||||
|           <el-form-item label="生物芯片耳标号" class="row"> | ||||
|             <b v-text="detail.biochipEarNumber"/> | ||||
|             <b v-text="detail.biochipEarNumber" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="养殖场" prop="farmId"> | ||||
|             <b v-text="detail.farmName"/> | ||||
|             <b v-text="detail.farmName" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="养殖舍" prop="houseId"> | ||||
|             <b v-text="detail.houseName"/> | ||||
|             <b v-text="detail.houseName" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="养殖栏" prop="penId"> | ||||
|             <b v-text="detail.penName"/> | ||||
|             <b v-text="detail.penName" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="电子耳标号" prop="electronicEarNumber"> | ||||
|             <b v-text="detail.electronicEarNumber"/> | ||||
|             <b v-text="detail.electronicEarNumber" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="原厂耳标号" prop="category"> | ||||
|             <b v-text="detail.originalEarNumber"/> | ||||
|             <b v-text="detail.originalEarNumber" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="类别" prop="category"> | ||||
|             <b v-text="detail.category"/> | ||||
|             <b v-text="dict.getLabel('category',detail.category)" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="品种" prop="variety"> | ||||
|             <b v-text="detail.variety"/> | ||||
|             <b v-text="dict.getLabel('variety',detail.variety)" /> | ||||
|           </el-form-item> | ||||
|           <div class="row flex"> | ||||
|             <el-form-item v-for="(img,i) in formImages" :key="i" v-bind="img"> | ||||
|               <ai-uploader v-model="detail[img.prop]" value-is-url readonly/> | ||||
|             <el-form-item v-for="(img, i) in formImages" :key="i" v-bind="img"> | ||||
|               <ai-uploader v-model="detail[img.prop]" value-is-url readonly /> | ||||
|             </el-form-item> | ||||
|           </div> | ||||
|         </div> | ||||
|       </ai-card> | ||||
|       <ai-card title="淘汰信息"> | ||||
|         <el-form-item label="淘汰原因"> | ||||
|           <b v-text="dict.getLabel('outReason',detail.reason)"/> | ||||
|           <b v-text="dict.getLabel('outReason', detail.reason)" /> | ||||
|         </el-form-item> | ||||
|         <el-form-item label="淘汰时间"> | ||||
|           <b v-text="detail.outTime"/> | ||||
|           <b v-text="detail.outTime" /> | ||||
|         </el-form-item> | ||||
|         <el-form-item label="备注"> | ||||
|           <b v-text="detail.remark"/> | ||||
|           <b v-text="detail.remark" /> | ||||
|         </el-form-item> | ||||
|       </ai-card> | ||||
|       <ai-card title="审核信息"> | ||||
|         <div class="grid"> | ||||
|           <template v-if="isAudit"> | ||||
|             <el-form-item label="审批状态" prop="auditStatus" :rules="{required:true,message:'请选择审批状态'}"> | ||||
|               <ai-select v-model="detail.auditStatus" dict="auditStatus"/> | ||||
|             <el-form-item label="审批状态" prop="auditStatus" :rules="{ required: true, message: '请选择审批状态' }"> | ||||
|               <ai-audit @change="v => $set(detail, 'auditStatus', v)" /> | ||||
|             </el-form-item> | ||||
|             <el-form-item label="意见"> | ||||
|               <ai-input type="textarea" :rows="3" v-model="detail.remark"/> | ||||
|               <ai-input type="textarea" :rows="3" v-model="detail.remark" /> | ||||
|             </el-form-item> | ||||
|           </template> | ||||
|           <template v-else> | ||||
|   | ||||
| @@ -1,17 +1,17 @@ | ||||
| <script> | ||||
| import {mapState} from "vuex" | ||||
| import { mapState } from "vuex" | ||||
| import AiEartagPicker from "@project/xumu/components/AiEartagPicker.vue"; | ||||
|  | ||||
| const records = [ | ||||
|   {label: "序号", type: "index"}, | ||||
|   {label: "解押凭证号", prop: "releaseNo"}, | ||||
|   {label: "审批状态", prop: "auditStatus", dict: "auditStatus"}, | ||||
|   {label: "审批时间", prop: "auditTime"}, | ||||
|   {label: "审批人", prop: "auditName"}, | ||||
|   { label: "序号", type: "index" }, | ||||
|   { label: "解押凭证号", prop: "releaseNo" }, | ||||
|   { label: "审批状态", prop: "auditStatus", dict: "auditStatus" }, | ||||
|   { label: "审批时间", prop: "auditTime" }, | ||||
|   { label: "审批人", prop: "auditName" }, | ||||
| ] | ||||
| export default { | ||||
|   name: "sellAdd", | ||||
|   components: {AiEartagPicker}, | ||||
|   components: { AiEartagPicker }, | ||||
|   props: { | ||||
|     instance: Function, | ||||
|     permissions: Function, | ||||
| @@ -19,7 +19,7 @@ export default { | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       detail: {detailList: []}, | ||||
|       detail: { detailList: [] }, | ||||
|       records | ||||
|     } | ||||
|   }, | ||||
| @@ -32,15 +32,15 @@ export default { | ||||
|     }, | ||||
|     isEdit: v => v.$route.hash == "#edit", | ||||
|     formImages: v => [ | ||||
|       {label: "合同/协议", prop: "contractPicture", rules: {required: v.isEdit, message: '请上传 合同/协议'}}, | ||||
|       { label: "合同/协议", prop: "contractPicture", rules: { required: v.isEdit, message: '请上传 合同/协议' } }, | ||||
|     ], | ||||
|     columns: v => [ | ||||
|       {label: "序号", type: "index"}, | ||||
|       {label: "生物芯片耳标号", prop: "biochipEarNumber"}, | ||||
|       {label: "身长测量照片", prop: "heightPicture", upload: {instance: v.instance, readonly: !v.isEdit, valueIsUrl: !0, limit: 1}}, | ||||
|       {label: "电子耳标照片", prop: "earNumberPicture", upload: {instance: v.instance, readonly: !v.isEdit, valueIsUrl: !0, limit: 1}}, | ||||
|       {label: "防疫耳标照片", prop: "preventionPicture", upload: {instance: v.instance, readonly: !v.isEdit, valueIsUrl: !0, limit: 1}}, | ||||
|       {label: "解押办结凭证号", prop: "releaseNo", hide: v.isEdit}, | ||||
|       { label: "序号", type: "index" }, | ||||
|       { label: "生物芯片耳标号", prop: "biochipEarNumber" }, | ||||
|       { label: "身长测量照片", prop: "heightPicture", upload: { instance: v.instance, readonly: !v.isEdit, valueIsUrl: !0, limit: 1 } }, | ||||
|       { label: "电子耳标照片", prop: "earNumberPicture", upload: { instance: v.instance, readonly: !v.isEdit, valueIsUrl: !0, limit: 1 } }, | ||||
|       { label: "防疫耳标照片", prop: "preventionPicture", upload: { instance: v.instance, readonly: !v.isEdit, valueIsUrl: !0, limit: 1 } }, | ||||
|       { label: "解押办结凭证号", prop: "releaseNo", hide: v.isEdit }, | ||||
|     ].filter(e => !e.hide), | ||||
|     selectedEartags: v => v.detail.list?.length || 0, | ||||
|   }, | ||||
| @@ -49,19 +49,20 @@ export default { | ||||
|       this.$router.push(params) | ||||
|     }, | ||||
|     getDetail() { | ||||
|       const {id} = this.$route.query | ||||
|       return id && this.instance.post("/api/sell/apply/getInfo", null, {params: {contractNo: id}}).then(res => { | ||||
|       const { id } = this.$route.query | ||||
|       return id && this.instance.post("/api/sell/apply/getInfo", null, { params: { contractNo: id } }).then(res => { | ||||
|         if (res?.data) { | ||||
|           const detail = res.data | ||||
|           detail.detailList = detail.detailList || [] | ||||
|           detail.list = detail.list || [] | ||||
|           return this.detail = {...detail} | ||||
|           return this.detail = { ...detail } | ||||
|         } | ||||
|       }) | ||||
|     }, | ||||
|     submit() { | ||||
|       this.$refs.detail.validate().then(() => { | ||||
|         this.instance.post("/api/sell/apply/add", {...this.detail}).then(res => { | ||||
|         const earNumberList = this.detail.detailList.map(e => e.biochipEarNumber) | ||||
|         this.instance.post("/api/sell/apply/add", { ...this.detail, earNumberList }).then(res => { | ||||
|           if (res?.code == '0') { | ||||
|             this.$message.success("提交成功!") | ||||
|             this.back() | ||||
| @@ -81,44 +82,45 @@ export default { | ||||
|     <el-form size="small" label-width="120px" :model="detail" ref="detail"> | ||||
|       <ai-card title="基础信息"> | ||||
|         <div class="grid"> | ||||
|           <el-form-item label="养殖场" prop="farmId" :rules="{message:'请选择 养殖场'}"> | ||||
|             <b v-text="detail.farmName"/> | ||||
|           <el-form-item label="养殖场" prop="farmId" :rules="{ message: '请选择 养殖场' }"> | ||||
|             <b v-text="detail.farmName" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="贷款银行" prop="bankId" :rules="{message:'请选择 贷款银行'}"> | ||||
|             <b v-text="detail.bankName"/> | ||||
|           <el-form-item label="贷款银行" prop="bankId" :rules="{ message: '请选择 贷款银行' }"> | ||||
|             <b v-text="detail.bankName" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="贷款产品" prop="productType" :rules="{message:'请选择 贷款产品'}"> | ||||
|             <b v-text="dict.getLabel('loanProduct',detail.productType)"/> | ||||
|           <el-form-item label="贷款产品" prop="productType" :rules="{ message: '请选择 贷款产品' }"> | ||||
|             <b v-text="dict.getLabel('loanProduct', detail.productType)" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="贷款金额(万)" prop="loanAmount" :rules="{message:'请输入 预期贷款额'}"> | ||||
|             <ai-input v-model.number="detail.loanAmount" :edit="!1"/> | ||||
|           <el-form-item label="贷款金额(万)" prop="loanAmount"> | ||||
|             <ai-input v-model.number="detail.loanAmount" :edit="!1" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="联系人" prop="contacts" :rules="{message:'请输入 联系人'}"> | ||||
|             <ai-input v-model="detail.contacts" :edit="!1"/> | ||||
|           <el-form-item label="联系人" prop="contacts" :rules="{ message: '请输入 联系人' }"> | ||||
|             <ai-input v-model="detail.contacts" :edit="!1" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="联系电话" prop="phone" :rules="{message:'请输入 联系电话'}"> | ||||
|             <ai-input v-model="detail.phone" :edit="!1"/> | ||||
|           <el-form-item label="联系电话" prop="phone" :rules="{ message: '请输入 联系电话' }"> | ||||
|             <ai-input v-model="detail.phone" :edit="!1" /> | ||||
|           </el-form-item> | ||||
|         </div> | ||||
|       </ai-card> | ||||
|       <ai-card title="标的信息"> | ||||
|         <template #right v-if="isEdit"> | ||||
|           <ai-eartag-picker @select="v=>detail.detailList=v" :instance="instance" | ||||
|                             :action="`/api/sell/apply/getClaimEarNumberList?contractNo=${detail.contractNo}`"> | ||||
|           <ai-eartag-picker @select="v => detail.detailList = v.map(e=>({biochipEarNumber:e}))" :instance="instance" | ||||
|             :action="`/api/sell/apply/getClaimEarNumberList?contractNo=${detail.contractNo}`"> | ||||
|             <el-button type="text">选择</el-button> | ||||
|           </ai-eartag-picker> | ||||
|         </template> | ||||
|         <ai-highlight class="mar-b8 font-14" :content="`投保标的共${detail.insureNumber||0}只,已理赔标的共 @v 只`" color="red" :value="selectedEartags"/> | ||||
|         <ai-table :tableData="detail.detailList" :colConfigs="columns" :isShowPagination="!1" hideOptions/> | ||||
|         <ai-highlight class="mar-b8 font-14" :content="`投保标的共${detail.insureNumber || 0}只,已理赔标的共 @v 只`" color="red" | ||||
|           :value="selectedEartags" /> | ||||
|         <ai-table :tableData="detail.detailList" :colConfigs="columns" :isShowPagination="!1" hideOptions /> | ||||
|       </ai-card> | ||||
|       <ai-card title="解押材料" v-if="isEdit"> | ||||
|         <div class="font-12 mar-b8">只能上传JPG/PNG文件,且不超过2M,一次最多5张</div> | ||||
|         <el-form-item v-for="(img,i) in formImages" :key="i" v-bind="img"> | ||||
|           <ai-uploader v-model="detail[img.prop]" :instance="instance" value-is-url :limit="5"/> | ||||
|         <el-form-item v-for="(img, i) in formImages" :key="i" v-bind="img"> | ||||
|           <ai-uploader v-model="detail[img.prop]" :instance="instance" value-is-url :limit="5" /> | ||||
|         </el-form-item> | ||||
|       </ai-card> | ||||
|       <ai-card title="出栏解押记录" v-else> | ||||
|         <ai-table :tableData="detail.list" :colConfigs="records" :isShowPagination="!1" hideOptions/> | ||||
|         <ai-table :tableData="detail.list" :colConfigs="records" :isShowPagination="!1" hideOptions /> | ||||
|       </ai-card> | ||||
|     </el-form> | ||||
|     <div slot="footer"> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user