detailsPage.vue 87 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622
  1. <template>
  2. <div>
  3. <div class="customer-head">
  4. <div class="customer-back">
  5. <el-button type="danger" style="border: none;background: none;color: red" icon="el-icon-arrow-left"
  6. @click="goBack()">返回列表
  7. </el-button>
  8. </div>
  9. <div class="add-customer-btn">
  10. <el-button class="el-button--small-yh" style="margin-left: 6px;" type="primary" size="small" v-if="editButton"
  11. :disabled="showLock || !(roleName.indexOf('admin') != -1 || roleName.indexOf('允许修改他人业务') != -1 || saberUserInfo.user_id == form.createUser)"
  12. @click="inEdit">编 辑
  13. </el-button>
  14. <el-button class="el-button--small-yh" v-else style="margin-left: 6px;" type="primary" size="small"
  15. :disabled="isSaveBtn" @click="submit">保 存
  16. </el-button>
  17. <!-- <el-button v-if="form.status == '审核提交'" class="el-button--small-yh" style="margin-left: 6px;" type="danger"
  18. size="small" @click="revokeApplication">撤销单据请核
  19. </el-button> -->
  20. <!-- <el-dropdown style="line-height: 0">
  21. <el-button class="el-button--small-yh" style="margin-left: 6px;" type="warning" :disabled="!form.id"
  22. size="small">
  23. 审 批<i class="el-icon-arrow-down el-icon--right"></i>
  24. </el-button>
  25. <el-dropdown-menu slot="dropdown">
  26. <el-dropdown-item @click.native="checkScheduleDialog = true, checkId = form.id">审核进度
  27. </el-dropdown-item>
  28. </el-dropdown-menu>
  29. </el-dropdown> -->
  30. </div>
  31. </div>
  32. <div style="margin-top: 50px">
  33. <el-tabs type="border-card">
  34. <el-tab-pane label="基础信息">
  35. <trade-card title="基础信息">
  36. <avue-form :option="optionForm" v-model="form" ref="form">
  37. <tempalte slot="purchaseCompanyName">
  38. <dic-select v-model="form.purchaseCompanyName" placeholder="出租方" key="id" label="shortName"
  39. res="records" url="/blade-los/bcorps/selectList?status=0&current=1&size=5&corpTypeName=箱东"
  40. :filterable="true" :remote="true" dataName="shortName"
  41. @selectChange="dicChange('purchaseCompanyName', $event)" :slotRight="true" rightLabel="code"
  42. :disabled="editDisabled || form.tradingBoxItemsList.length"></dic-select>
  43. </tempalte>
  44. <tempalte slot="polStationCname">
  45. <dic-select v-model="form.polStationCname" placeholder="退/还箱地" key="id" label="cnName" res="records"
  46. url="/blade-los/bcorps/selectList?status=0&current=1&size=5&corpTypeName=场站" :filterable="true"
  47. :remote="true" dataName="cnName" @selectChange="dicChange('polStationCname', $event)"
  48. :slotRight="true" rightLabel="code"
  49. :disabled="editDisabled || form.tradingBoxItemsList.length"></dic-select>
  50. </tempalte>
  51. <tempalte slot="addressCname">
  52. <dic-select v-model="form.addressCname" placeholder="港口" key="id" label="cnName" res="records"
  53. url="/blade-los/bports/list?status=0&current=1&size=5" :filterable="true" :remote="true"
  54. dataName="cnName" @selectChange="dicChange('addressCname', $event)" :slotRight="true"
  55. rightLabel="code" :disabled="editDisabled || form.tradingBoxItemsList.length"></dic-select>
  56. </tempalte>
  57. <tempalte slot="stationCname">
  58. <dic-select v-model="form.stationCname" placeholder="场站" :key="updateFormKey" label="cnName"
  59. res="records" :slotRight="true" rightLabel="code"
  60. :url="'/blade-los/bcorps/selectList?status=0&current=1&size=5&corpTypeName=场站&ids=' + (form.cyText ? form.cyText : '')"
  61. :filterable="true" :remote="true" dataName="cnName" @selectChange="dicChange('stationCname', $event)"
  62. :disabled="editDisabled || !form.addressId || form.tradingBoxItemsList.length"></dic-select>
  63. </tempalte>
  64. <tempalte slot="totalAmountC">
  65. <el-input-number v-model="form.totalAmountC" :min="0" placeholder="请输入 押金" size="small"
  66. :controls="false" style="width:100%"
  67. :disabled="editDisabled || form.tradingBoxItemsList.length"></el-input-number>
  68. </tempalte>
  69. </avue-form>
  70. </trade-card>
  71. <trade-card title="箱型箱量">
  72. <avue-crud ref="crudBox" :option="boxOption" :data="form.boxTypeList"
  73. @selection-change="boxSelectionChange">
  74. <template slot="menuLeft">
  75. <el-button type="info" plain size="small" :disabled="editDisabled || !form.id || form.buxStaus != '录入'"
  76. @click="allClick('box一键保存')">一键保存</el-button>
  77. <el-button type="info" plain size="small"
  78. :disabled="editDisabled || form.boxTypeList.length == 0 || form.buxStaus != '录入'"
  79. @click="allClick('box一键编辑')">一键编辑</el-button>
  80. <el-button type="danger" plain size="small"
  81. :disabled="editDisabled || boxSelectionList.length == 0 || form.buxStaus != '录入'"
  82. @click="allClick('box批量删除')">批量删除</el-button>
  83. </template>
  84. <template slot="indexHeader" slot-scope="{row,index}">
  85. <el-button type="primary" size="mini" icon="el-icon-plus"
  86. :disabled="editDisabled || !form.id || form.buxStaus != '录入'" circle @click="boxAddRow()">
  87. </el-button>
  88. </template>
  89. <template slot="index" slot-scope="{row,index}">
  90. <span>{{ index + 1 }}</span>
  91. </template>
  92. <template slot="boxTypeForm" slot-scope="{ row }">
  93. <dic-select v-if="row.$cellEdit" v-model="row.boxType" key="id" label="cnName" res="records"
  94. url="/blade-los/bcntrtypes/list?status=0&current=1&size=20" :filterable="true" :remote="true"
  95. dataName="cnName" @selectChange="rowDicChange('boxType', $event, row)"></dic-select>
  96. <span v-else>{{ row.boxType }}</span>
  97. </template>
  98. </avue-crud>
  99. </trade-card>
  100. <trade-card title="箱明细">
  101. <avue-crud :option="option" :data="form.tradingBoxItemsList" id="out-table" ref="crud"
  102. :header-cell-class-name="headerClassName" :row-style="{ height: '20px', padding: '0px' }"
  103. :cell-style="{ height: '20px', padding: '0px' }" @selection-change="selectionChange"
  104. @select="selectHandle" @row-update="rowUpdate"
  105. @resetColumn="resetColumn('crud', 'option', 'optionBack', 473)"
  106. @saveColumn="saveColumn('crud', 'option', 'optionBack', 473)">
  107. <template slot="menuLeft">
  108. <el-button type="info" plain size="small" :disabled="editDisabled || !form.id || form.buxStaus != '录入'"
  109. @click="allClick('一键保存')">一键保存</el-button>
  110. <el-button type="info" plain size="small"
  111. :disabled="editDisabled || form.tradingBoxItemsList.length == 0 || form.buxStaus != '录入'"
  112. @click="allClick('一键编辑')">一键编辑</el-button>
  113. <el-button type="danger" plain size="small"
  114. :disabled="editDisabled || selectionList.length == 0 || form.buxStaus != '录入'"
  115. @click="allClick('批量删除')">批量删除</el-button>
  116. <el-button type="primary" plain size="small" @click="allClick('起租')"
  117. :disabled="form.buxStaus != '录入' || form.tradingBoxItemsList.length == 0">起租</el-button>
  118. <el-button type="success" plain size="small" @click="allClick('生成租金')"
  119. :disabled="form.buxStaus != '已启租'">生成租金</el-button>
  120. <el-button type="danger" plain size="small" @click="allClick('撤销租金')"
  121. :disabled="form.buxStaus != '已启租'">撤销租金</el-button>
  122. <el-button type="warning" plain size="small" @click="allClick('退租')"
  123. :disabled="form.buxStaus != '已启租'">退租</el-button>
  124. <el-button type="danger" plain size="small" @click="allClick('撤销退租')"
  125. :disabled="form.buxStaus != '已退租'">撤销退租</el-button>
  126. <el-button type="success" size="small" @click="allClick('导入')"
  127. :disabled="!form.id || form.buxStaus != '录入'">导入</el-button>
  128. <el-button type="info" size="small" @click="allClick('启用')"
  129. :disabled="selectionList.length == 0 || form.buxStaus != '已启租'">启用</el-button>
  130. <!-- <el-button type="primary" size="small" @click="allClick('卖箱')">卖箱</el-button> -->
  131. <el-button size="small" style="margin-right: 8px" :disabled="!form.id || true"
  132. @click="$refs.print.openDialog()">打印报表
  133. </el-button>
  134. </template>
  135. <template slot="indexHeader" slot-scope="{row,index}">
  136. <el-button type="primary" size="mini" icon="el-icon-plus"
  137. :disabled="editDisabled || form.buxStaus != '录入'" circle @click="addRow()">
  138. </el-button>
  139. </template>
  140. <template slot="index" slot-scope="{row,index}">
  141. <span>{{ index + 1 }}</span>
  142. </template>
  143. <template slot="boxTypeForm" slot-scope="{ row }">
  144. <dic-select v-if="row.$cellEdit" v-model="row.boxType" key="id" label="cnName" res="records"
  145. url="/blade-los/bcntrtypes/list?status=0&current=1&size=20" :filterable="true" :remote="true"
  146. dataName="cnName" @selectChange="rowDicChange('boxType', $event, row)"></dic-select>
  147. <span v-else>{{ row.boxType }}</span>
  148. </template>
  149. <template slot="currencyForm" slot-scope="{ row }">
  150. <dic-select v-if="row.$cellEdit" v-model="row.currency" placeholder="币别" label="code"
  151. :url="'/blade-los/bcurrency/getExrate?date=' + form.effectiveDate + '&dc=C'" :filterable="true"
  152. @selectChange="rowDicChange('currency', $event, row)"></dic-select>
  153. <span v-else>{{ row.currency }}</span>
  154. </template>
  155. <tempalte slot="originalBoxEastNameForm" slot-scope="{ row }">
  156. <dic-select v-if="row.$cellEdit" v-model="row.originalBoxEastName" placeholder="箱东" key="id"
  157. label="shortName" res="records"
  158. url="/blade-los/bcorps/selectList?status=0&current=1&size=5&corpTypeName=箱东" :filterable="true"
  159. :remote="true" dataName="shortName" @selectChange="rowDicChange('originalBoxEastName', $event, row)"
  160. :slotRight="true" rightLabel="code">
  161. </dic-select>
  162. <span v-else>{{ row.originalBoxEastName }}</span>
  163. </tempalte>
  164. <tempalte slot="stationCnameForm" slot-scope="{ row }">
  165. <dic-select v-if="row.$cellEdit" v-model="row.stationCname" placeholder="场站" key="id" label="cnName"
  166. res="records" url="/blade-los/bcorps/selectList?status=0&current=1&size=5&corpTypeName=场站"
  167. :filterable="true" :remote="true" dataName="cnName"
  168. @selectChange="rowDicChange('stationCname', $event, row)" :slotRight="true"
  169. rightLabel="code"></dic-select>
  170. <span v-else>{{ row.stationCname }}</span>
  171. </tempalte>
  172. <tempalte slot="restrictedPortsNameForm" slot-scope="{ row }">
  173. <dic-select v-show="row.$cellEdit" v-model="row.restrictedPortsName" placeholder="港口" key="id"
  174. label="cnName" url="/blade-los/bports/listAll?status=0" :filterable="true" :multiple="true"
  175. :collapseTags="true" @selectChange="rowDicChange('restrictedPortsName', $event, row)"
  176. dataType="string" :slotRight="true" rightLabel="code"></dic-select>
  177. <span v-show="!row.$cellEdit">{{ row.restrictedPortsName }}</span>
  178. </tempalte>
  179. <tempalte slot="restrictingShippingCompaniesNameForm" slot-scope="{ row }">
  180. <dic-select v-show="row.$cellEdit" v-model="row.restrictingShippingCompaniesName" placeholder="船公司"
  181. key="id" label="cnName" url="/blade-los/bcorps/listAll?status=0&corpTypeName=船公司" :filterable="true"
  182. :multiple="true" :collapseTags="true" :slotRight="true" rightLabel="code"
  183. @selectChange="rowDicChange('restrictingShippingCompaniesName', $event, row)"
  184. dataType="string"></dic-select>
  185. <span v-show="!row.$cellEdit">{{ row.restrictingShippingCompaniesName }}</span>
  186. </tempalte>
  187. </avue-crud>
  188. </trade-card>
  189. <trade-card title="操作记录">
  190. <avue-form :option="optionForm2" v-model="form" ref="form2">
  191. </avue-form>
  192. </trade-card>
  193. </el-tab-pane>
  194. <el-tab-pane label="费用信息">
  195. <el-card
  196. v-show="roleName.indexOf('admin') != -1 || roleName.indexOf('应付修改') != -1 ? true : roleName.indexOf('应付查看') != -1"
  197. class="box-card" style="margin: 2px 0">
  198. <avue-crud :option="feecOption" :data="form.feeCenterList" id="out-table" ref="crud2"
  199. :header-cell-class-name="headerClassName" :row-style="{ height: '20px' }" :cell-style="{ padding: '0px' }"
  200. @selection-change="feecChange" @row-update="rowUpdate"
  201. @resetColumn="resetColumn('crud2', 'feecOption', 'feecOptionBack', 235.2)"
  202. @saveColumn="saveColumn('crud2', 'feecOption', 'feecOptionBack', 235.2)">
  203. <template slot="menuLeft">
  204. <div style="display: inline-block;margin-right: 20px" class="disabledBox meetSize">
  205. <i class="el-icon-coin"></i>
  206. <span>应付费用</span>
  207. </div>
  208. <el-button type="info" plain size="small" :disabled="editDisabled"
  209. @click="allClick('费用一键保存')">一键保存</el-button>
  210. <el-button type="info" plain size="small" :disabled="editDisabled"
  211. @click="allClick('费用一键编辑')">一键编辑</el-button>
  212. <el-button type="danger" plain size="small" :disabled="editDisabled || selectionfeecList.length == 0"
  213. @click="allClick('费用批量删除')">批量删除</el-button>
  214. <el-button type="primary" plain size="small" :disabled="editDisabled || selectionfeecList.length == 0"
  215. @click="allClick('费用申请')">费用申请</el-button>
  216. <!-- <el-button type="primary" plain size="small" @click="$refs.printC.openDialog()">打印账单</el-button> -->
  217. </template>
  218. <template slot="indexHeader" slot-scope="{row,index}">
  219. <el-button type="primary" size="mini" icon="el-icon-plus" :disabled="editDisabled" circle
  220. @click="feecAddRow()">
  221. </el-button>
  222. </template>
  223. <template slot="index" slot-scope="{row,index}">
  224. <span>{{ index + 1 }}</span>
  225. </template>
  226. <template slot="billTypeForm" slot-scope="{row,index}">
  227. <dic-select v-if="row.$cellEdit && !(row.feeCode == 'BOX-YJ' || row.feeCode == 'BOX-ZJ')" v-model="row.billType"
  228. key="id" label="cnName" res="records"
  229. url="/blade-los/bcorpstypedefine/list?status=0&current=1&size=20" :filterable="true" :remote="true"
  230. dataName="cnName" @selectChange="rowDicChange('billType', $event, row, index)"></dic-select>
  231. <span v-else>{{ row.billType }}</span>
  232. </template>
  233. <template slot="cntrNoForm" slot-scope="{row,index}">
  234. <dic-select v-if="row.$cellEdit && !(row.feeCode == 'BOX-YJ' || row.feeCode == 'BOX-ZJ')" v-model="row.cntrNo"
  235. key="id" label="code" :mockData="form.tradingBoxItemsList" :filterable="true"></dic-select>
  236. <span v-else>{{ row.cntrNo }}</span>
  237. </template>
  238. <template slot="corpCnNameForm" slot-scope="{ row,index }">
  239. <dic-select v-if="row.$cellEdit && !(row.feeCode == 'BOX-YJ' || row.feeCode == 'BOX-ZJ')" :key="updateSearchKey"
  240. v-model="row.corpCnName" placeholder="付费对象" label="shortName" res="records" :slotRight="true"
  241. rightLabel="code"
  242. :url="'/blade-los/bcorps/selectList?status=0&current=1&size=5&corpTypeName=' + row.billType"
  243. :filterable="true" :remote="true" dataName="shortName"
  244. @selectChange="rowDicChange('corpCnName', $event, row)"></dic-select>
  245. <span v-else>{{ row.corpCnName }}</span>
  246. <!-- <dic-select v-if="row.$cellEdit" v-model="row.corpCnName" key="id" placeholder="付费对象" label="cnName"
  247. res="records" url="/blade-los/bcorps/selectList?corpTypeName=船公司&status=0&current=1&size=20"
  248. :filterable="true" :remote="true" dataName="cnName"
  249. @selectChange="rowDicChange('corpCnName', $event, row)"></dic-select>
  250. <span v-else>{{ row.corpCnName }}</span> -->
  251. </template>
  252. <template slot="feeCnNameForm" slot-scope="{ row }">
  253. <dic-select v-if="row.$cellEdit && !(row.feeCode == 'BOX-YJ' || row.feeCode == 'BOX-ZJ')"
  254. v-model="row.feeCnName" key="id" placeholder="费用名称" label="cnName" res="records"
  255. url="/blade-los/bfees/list?current=1&size=5&status=0&current=1&size=20" :filterable="true"
  256. :remote="true" dataName="cnName" disabledLabel="押金,租箱费"
  257. @selectChange="rowDicChange('feeCnName', $event, row)"></dic-select>
  258. <span v-else>{{ row.feeCnName }}</span>
  259. </template>
  260. <template slot="curCodeForm" slot-scope="{ row }">
  261. <dic-select v-if="row.$cellEdit" v-model="row.curCode" placeholder="币别" label="code"
  262. :url="'/blade-los/bcurrency/getExrate?date=' + form.effectiveDate + '&dc=C'" :filterable="true"
  263. @selectChange="rowDicChange('curCode', $event, row)"></dic-select>
  264. <span v-else>{{ row.curCode }}</span>
  265. </template>
  266. <template slot="exrateForm" slot-scope="{ row }">
  267. <el-input-number v-if="row.$cellEdit && !(row.feeCode == 'BOX-YJ' || row.feeCode == 'BOX-ZJ')"
  268. v-model="row.exrate" :controls="false" placeholder="请输入 汇率" size="small"
  269. style="width: 100%;"></el-input-number>
  270. <span v-else>{{ row.exrate }}</span>
  271. </template>
  272. <template slot="unitNoForm" slot-scope="{row,index}">
  273. <dic-select v-if="row.$cellEdit && !(row.feeCode == 'BOX-YJ' || row.feeCode == 'BOX-ZJ')" v-model="row.unitNo"
  274. label="cnName" url="/blade-los/bunits/listAll?status=0" :filterable="true"></dic-select>
  275. <span v-else>{{ row.unitNo }}</span>
  276. </template>
  277. <template slot="priceForm" slot-scope="{ row }">
  278. <el-input-number v-if="row.$cellEdit && !(row.feeCode == 'BOX-YJ' || row.feeCode == 'BOX-ZJ')"
  279. v-model="row.price" :controls="false" placeholder="请输入 成本价" size="small" style="width: 100%;"
  280. :precision="2" @change="countChange(row)"></el-input-number>
  281. <span v-else>{{ row.price }}</span>
  282. </template>
  283. <template slot="quantityForm" slot-scope="{ row }">
  284. <el-input-number v-if="row.$cellEdit && !(row.feeCode == 'BOX-YJ' || row.feeCode == 'BOX-ZJ')"
  285. v-model="row.quantity" :controls="false" placeholder="请输入 成本价" size="small" style="width: 100%;"
  286. :precision="0" @change="countChange(row)"></el-input-number>
  287. <span v-else>{{ row.quantity }}</span>
  288. </template>
  289. <template slot="menu" slot-scope="{ row, index }">
  290. <el-button size="small" icon="el-icon-delete" type="text" :disabled="editDisabled"
  291. @click="polRowDel(row, index)">删 除</el-button>
  292. </template>
  293. </avue-crud>
  294. </el-card>
  295. </el-tab-pane>
  296. <el-tab-pane label="文件中心">
  297. <containerTitle title="上传附件"></containerTitle>
  298. <c-upload :data="form.tradingBoxFilesList" :enumerationValue="76"
  299. deleteUrl="/api/blade-los/tradingBoxFiles/remove" display :disabled="editButton"></c-upload>
  300. </el-tab-pane>
  301. </el-tabs>
  302. </div>
  303. <business-reports :id="form.id" :itemIds="itemIds" ref="print" businessValue="MYDL" :type="true"></business-reports>
  304. <business-reports :id="form.id" :itemIds="itemCIds" ref="printC" businessValue="MYDL" classifyCode="费用"
  305. groupCode="应付" :selecList="selectionfeecList"></business-reports>
  306. <reports :id="form.id" :assemblyForm="form" businessValue="MYDL" ref="report"></reports>
  307. <!--审核弹窗-->
  308. <el-dialog append-to-body title="审批进度" class="el-dialogDeep" :visible.sync="checkScheduleDialog" width="40%"
  309. :close-on-click-modal="false" :destroy-on-close="true" :close-on-press-escape="false" v-dialog-drag>
  310. <check-schedule :checkId="checkId" :batchNo="batchNo" @choceScheduleFun="choceScheduleFun"></check-schedule>
  311. </el-dialog>
  312. <!-- 启用 -->
  313. <el-dialog append-to-body title="放箱号" :visible.sync="activationDialog" width="30%" :before-close="activationClose"
  314. v-dialog-drag>
  315. <span>
  316. <avue-form ref="form2" v-model="activationForm" :option="activationOption">
  317. <tempalte slot="polCname">
  318. <dic-select v-model="activationForm.polCname" placeholder="港口" key="id" label="cnName" res="records"
  319. url="/blade-los/bports/list" :filterable="true" :remote="true" dataName="cnName"
  320. @selectChange="dicChange('polCname', $event)"></dic-select>
  321. </tempalte>
  322. <tempalte slot="polStationCname">
  323. <dic-select v-model="activationForm.polStationCname" placeholder="场站" :key="updateStationKey" label="cnName"
  324. res="records" :slotRight="true" rightLabel="code"
  325. :url="'/blade-los/bcorps/selectList?current=1&size=5&corpTypeName=场站&ids=' + (form.cyTextOne ? form.cyTextOne : '')"
  326. :filterable="true" :remote="true" dataName="cnName" @selectChange="dicChange('polStationCname2', $event)"
  327. :disabled="editDisabled || !activationForm.polCname"></dic-select>
  328. </tempalte>
  329. <tempalte slot="podCname">
  330. <dic-select v-model="activationForm.podCname" placeholder="港口" key="id" label="cnName" res="records"
  331. url="/blade-los/bports/list" :filterable="true" :remote="true" dataName="cnName"
  332. @selectChange="dicChange('podCname', $event)" :disabled="editDisabled"></dic-select>
  333. </tempalte>
  334. </avue-form>
  335. </span>
  336. <span slot="footer" class="dialog-footer">
  337. <el-button @click="activationDialog = false" size="mini">取 消</el-button>
  338. <el-button type="primary" @click.stop="activationSubmit" size="mini">确 定</el-button>
  339. </span>
  340. </el-dialog>
  341. <el-dialog title="导入数据" append-to-body :visible.sync="excelBox" width="555px" :close-on-click-modal="false"
  342. v-dialog-drag>
  343. <avue-form :option="excelOption" v-model="excelForm" :table-loading="excelLoading" :upload-before="uploadBefore"
  344. :upload-after="onSuccess">
  345. <template slot="excelTemplate">
  346. <el-button type="primary" @click="handleGet">
  347. 点击下载<i class="el-icon-download el-icon--right"></i>
  348. </el-button>
  349. </template>
  350. </avue-form>
  351. <p style="text-align: center;color: #DC0505">
  352. 温馨提示 第一次导入时请先下载模板
  353. </p>
  354. </el-dialog>
  355. </div>
  356. </template>
  357. <script>
  358. import {
  359. detail,
  360. submit,
  361. pleaseCheck,
  362. repealCancel,
  363. tradingBoxItem,
  364. tradingBoxFees,
  365. submitItemList,
  366. submitFeeList,
  367. enable,
  368. submitBoxList,
  369. boxRemove,
  370. startingRent,
  371. revokeRentingOut,
  372. rentCalculation,
  373. revokeRentCalculation,
  374. copyAgent,
  375. pleaseVerifyCost
  376. } from "@/api/boxManagement/buyContainer/index.js";
  377. import dicSelect from "@/components/dicSelect/main";
  378. import checkSchedule from "@/components/checkH/checkSchedule.vue";
  379. import businessReports from "@/components/tradeAgency/businessReports.vue";
  380. import reports from "@/components/tradeAgency/reports.vue";
  381. import { dateFormat } from "@/util/date";
  382. import { bcurrencyGetExrate } from "@/api/iosBasicData/rateManagement";
  383. import { getToken } from "@/util/auth";
  384. import _ from "lodash";
  385. import { Header } from "element-ui";
  386. import { values } from "lodash";
  387. export default {
  388. name: "detailsPage",
  389. data() {
  390. return {
  391. boxSelectionList: [],
  392. rulesList: [],
  393. rtOption: {
  394. border: true,
  395. align: 'center',
  396. menuWidth: 120,
  397. // menu: false,
  398. editBtn: false,
  399. delBtn: false,
  400. header: false,
  401. addBtn: false,
  402. height: '400px',
  403. column: [
  404. {
  405. label: "index",
  406. prop: "index",
  407. width: "55",
  408. headerslot: true,
  409. },
  410. {
  411. label: '起',
  412. prop: 'riseDays',
  413. cell: true,
  414. type: 'number',
  415. controls: false,
  416. overHidden: true,
  417. },
  418. {
  419. label: '止',
  420. prop: 'stopDays',
  421. cell: true,
  422. type: 'number',
  423. controls: false,
  424. overHidden: true,
  425. },
  426. {
  427. label: '费率',
  428. prop: 'rate',
  429. cell: true,
  430. type: 'number',
  431. controls: false,
  432. overHidden: true,
  433. },
  434. {
  435. label: '币别',
  436. prop: 'curCode',
  437. cell: true,
  438. type: 'select',
  439. dicData: [{
  440. label: 'CNY',
  441. value: 'CNY',
  442. }, {
  443. label: 'USD',
  444. value: 'USD',
  445. }],
  446. overHidden: true,
  447. },
  448. ]
  449. },
  450. rtDialog: false,
  451. boxOption: {
  452. calcHeight: 30,
  453. menuWidth: 120,
  454. menu: false,
  455. tip: false,
  456. border: true,
  457. addBtn: false,
  458. viewBtn: false,
  459. editBtn: false,
  460. delBtn: false,
  461. // header: false,
  462. columnBtn: false,
  463. refreshBtn: false,
  464. selection: true,
  465. align: 'center',
  466. column: [
  467. {
  468. label: "index",
  469. prop: "index",
  470. width: "55",
  471. headerslot: true,
  472. },
  473. {
  474. label: "箱型",
  475. prop: "boxType",
  476. cell: true,
  477. slot: true,
  478. formslot: true,
  479. overHidden: true,
  480. rules: [{
  481. required: true,
  482. message: "请选择箱型",
  483. trigger: "blur"
  484. }]
  485. },
  486. {
  487. label: "预计箱量",
  488. prop: "number",
  489. cell: true,
  490. overHidden: true,
  491. rules: [{
  492. required: true,
  493. message: "请输入预计箱量",
  494. trigger: "blur"
  495. }]
  496. },
  497. {
  498. label: "箱/天",
  499. prop: "price",
  500. cell: true,
  501. type: 'number',
  502. controls: false,
  503. overHidden: true,
  504. rules: [{
  505. required: true,
  506. message: "请输入箱/天",
  507. trigger: "blur"
  508. }]
  509. },
  510. ]
  511. },
  512. excelBox: false,
  513. excelForm: {},
  514. excelLoading: false,
  515. excelOption: {
  516. submitBtn: false,
  517. emptyBtn: false,
  518. column: [
  519. {
  520. label: "模板下载",
  521. prop: "excelTemplate",
  522. formslot: true,
  523. span: 24
  524. },
  525. {
  526. label: "模板上传",
  527. prop: "excelFile",
  528. type: "upload",
  529. drag: true,
  530. loadText: "模板上传中,请稍等",
  531. span: 24,
  532. propsHttp: {
  533. res: "data"
  534. },
  535. tip: "请上传 .xls,.xlsx 标准格式文件",
  536. action: "/api/blade-los/tradingBoxItem/importBoxItem"
  537. }
  538. ]
  539. },
  540. activationForm: {},
  541. activationOption: {
  542. menuBtn: false,
  543. span: 6,
  544. disabled: false,
  545. column: [
  546. {
  547. label: '放箱号',
  548. prop: 'containerNumber',
  549. span: 24,
  550. rules: [{
  551. required: true,
  552. message: " ",
  553. trigger: "blur"
  554. }],
  555. },
  556. {
  557. label: '起运港',
  558. prop: 'polCname',
  559. span: 24,
  560. rules: [{
  561. required: true,
  562. message: " ",
  563. trigger: "blur"
  564. }],
  565. },
  566. {
  567. label: '起运港场站',
  568. prop: 'polStationCname',
  569. span: 24,
  570. rules: [{
  571. required: true,
  572. message: " ",
  573. trigger: "blur"
  574. }],
  575. },
  576. {
  577. label: '目的港',
  578. prop: 'podCname',
  579. span: 24,
  580. rules: [{
  581. required: true,
  582. message: " ",
  583. trigger: "blur"
  584. }],
  585. },
  586. {
  587. label: '启用日期',
  588. prop: 'activationDate',
  589. span: 24,
  590. type: "date",
  591. format: "yyyy-MM-dd",
  592. valueFormat: "yyyy-MM-dd HH:mm:ss",
  593. rules: [{
  594. required: true,
  595. message: "",
  596. trigger: "blur"
  597. }]
  598. },
  599. ]
  600. },
  601. activationDialog: false,
  602. itemCIds: null,
  603. feeType: null,
  604. selectionList: [],
  605. selectionfeecList: [],
  606. checkId: '', // 审核需要的id
  607. batchNo: '',
  608. checkScheduleDialog: false, // 审核弹窗
  609. editButton: false,
  610. editDisabled: false,
  611. form: {
  612. type: "ZR",
  613. totalAmountC: 0,
  614. agreement: '到协议场站',
  615. boxCondition: '新',
  616. log: '否',
  617. boxTypeList: [],
  618. tradingBoxItemsList: [],
  619. feeCenterList: [],
  620. tradingBoxFilesList: [],
  621. },
  622. oldForm: {},
  623. optionForm: {
  624. menuBtn: false,
  625. span: 6,
  626. disabled: false,
  627. labelWidth: 100,
  628. column: [
  629. {
  630. label: '出租方',
  631. prop: 'purchaseCompanyName',
  632. rules: [{
  633. required: true,
  634. message: " ",
  635. trigger: "blur"
  636. }],
  637. disabled: false
  638. },
  639. {
  640. label: '合同号',
  641. prop: 'contractNo',
  642. rules: [{
  643. required: true,
  644. message: " ",
  645. trigger: "blur"
  646. }],
  647. disabled: false
  648. },
  649. {
  650. label: '租入日期',
  651. prop: 'effectiveDate',
  652. type: "date",
  653. format: "yyyy-MM-dd",
  654. valueFormat: "yyyy-MM-dd HH:mm:ss",
  655. rules: [{
  656. required: true,
  657. message: " ",
  658. trigger: "blur"
  659. }],
  660. disabled: false
  661. },
  662. {
  663. label: '到期日期',
  664. prop: 'expiryDate',
  665. type: "date",
  666. format: "yyyy-MM-dd",
  667. valueFormat: "yyyy-MM-dd HH:mm:ss",
  668. rules: [{
  669. required: true,
  670. message: " ",
  671. trigger: "blur"
  672. }],
  673. disabled: false
  674. },
  675. {
  676. label: '港口',
  677. prop: 'addressCname',
  678. disabled: false,
  679. rules: [{
  680. required: true,
  681. message: " ",
  682. trigger: "blur"
  683. }]
  684. },
  685. {
  686. label: '场站',
  687. prop: 'stationCname',
  688. disabled: false
  689. },
  690. {
  691. label: '租/还箱标准',
  692. prop: 'standard',
  693. disabled: false,
  694. type: 'select',
  695. dicUrl: "/api/blade-system/dict-biz/dictionary?code=conditions",
  696. props: {
  697. label: "dictValue",
  698. value: "dictValue"
  699. },
  700. rules: [{
  701. required: true,
  702. message: " ",
  703. trigger: "blur"
  704. }]
  705. },
  706. {
  707. label: '退/还箱地',
  708. prop: 'polStationCname',
  709. disabled: false,
  710. rules: [{
  711. required: true,
  712. message: " ",
  713. trigger: "blur"
  714. }]
  715. },
  716. {
  717. label: '业务状态',
  718. prop: 'buxStaus',
  719. disabled: true,
  720. },
  721. {
  722. label: '押金',
  723. prop: 'totalAmountC',
  724. disabled: false,
  725. },
  726. {
  727. label: '起租日期',
  728. prop: 'purchaseDate',
  729. type: "date",
  730. format: "yyyy-MM-dd",
  731. valueFormat: "yyyy-MM-dd 00:00:00",
  732. disabled: true
  733. },
  734. {
  735. label: '备注',
  736. prop: 'remarks',
  737. type: 'textarea',
  738. minRows: 2,
  739. span: 6
  740. }]
  741. },
  742. optionForm2: {
  743. menuBtn: false,
  744. span: 5,
  745. disabled: true,
  746. labelWidth: 100,
  747. column: [
  748. {
  749. label: '系统号',
  750. prop: 'sysNo',
  751. disabled: true
  752. },
  753. {
  754. label: '制单人',
  755. prop: "createUserName",
  756. disabled: true,
  757. span: 4,
  758. },
  759. {
  760. label: '制单日期',
  761. prop: "createTime",
  762. disabled: true,
  763. },
  764. {
  765. label: '修改人',
  766. prop: "updateUserName",
  767. disabled: true,
  768. span: 4,
  769. },
  770. {
  771. label: '修改日期',
  772. prop: "updateTime",
  773. disabled: true,
  774. }
  775. ]
  776. },
  777. option: {},
  778. optionBack: {
  779. // height: 'auto',
  780. calcHeight: 30,
  781. menuWidth: 60,
  782. searchMenuSpan: 18,
  783. tip: false,
  784. border: true,
  785. addBtn: false,
  786. viewBtn: false,
  787. editBtn: false,
  788. delBtn: false,
  789. refreshBtn: false,
  790. selection: true,
  791. align: 'center',
  792. menu: false,
  793. column: [
  794. {
  795. label: "index",
  796. prop: "index",
  797. width: "55",
  798. headerslot: true,
  799. },
  800. {
  801. label: "是否启用",
  802. prop: "whetherEnable",
  803. overHidden: true,
  804. },
  805. {
  806. label: '放箱号',
  807. prop: 'containerNumber',
  808. overHidden: true,
  809. width: 100,
  810. },
  811. {
  812. label: '箱号',
  813. prop: 'code',
  814. width: 140,
  815. cell: true,
  816. slot: true,
  817. formslot: true,
  818. overHidden: true,
  819. rules: [{
  820. required: true,
  821. message: "请输入箱号",
  822. trigger: "blur"
  823. }]
  824. },
  825. {
  826. label: '箱型',
  827. prop: 'boxType',
  828. width: 100,
  829. cell: true,
  830. slot: true,
  831. formslot: true,
  832. overHidden: true,
  833. rules: [{
  834. required: true,
  835. message: "请选择箱型",
  836. trigger: "blur"
  837. }]
  838. },
  839. {
  840. label: '箱属',
  841. prop: 'boxBelongsTo',
  842. overHidden: true,
  843. // cell: true,
  844. // width: 100,
  845. // type: 'select',
  846. // dicUrl: "/api/blade-system/dict-biz/dictionary?code=boxBelongsTo",
  847. // props: {
  848. // label: "dictValue",
  849. // value: "dictValue"
  850. // },
  851. // rules: [{
  852. // required: true,
  853. // message: "请选择箱属",
  854. // trigger: "blur"
  855. // }]
  856. },
  857. {
  858. label: '放箱号类型',
  859. prop: 'boxCategory',
  860. overHidden: true,
  861. cell: true,
  862. width: 100,
  863. type: 'select',
  864. dicUrl: "/api/blade-system/dict-biz/dictionary?code=boxCategory",
  865. props: {
  866. label: "dictValue",
  867. value: "dictValue"
  868. },
  869. rules: [{
  870. required: true,
  871. message: "请选择放箱号类型",
  872. trigger: "blur"
  873. }]
  874. },
  875. {
  876. label: '箱况',
  877. prop: 'boxCondition',
  878. overHidden: true,
  879. cell: true,
  880. width: 100,
  881. type: 'select',
  882. dicData: [{
  883. label: '新',
  884. value: '新',
  885. }, {
  886. label: '旧',
  887. value: '旧',
  888. }],
  889. rules: [{
  890. required: true,
  891. message: "请选择箱况",
  892. trigger: "blur"
  893. }]
  894. },
  895. {
  896. label: '箱状态',
  897. prop: 'status',
  898. width: 100,
  899. overHidden: true,
  900. },
  901. {
  902. label: '箱好坏',
  903. prop: 'boxStatus',
  904. width: 100,
  905. cell: true,
  906. overHidden: true,
  907. type: 'select',
  908. dicUrl: "/api/blade-system/dict-biz/dictionary?code=box_status",
  909. props: {
  910. label: "dictValue",
  911. value: "dictValue"
  912. },
  913. rules: [{
  914. required: true,
  915. message: "请选择箱好坏",
  916. trigger: "blur"
  917. }]
  918. },
  919. {
  920. label: '箱动态',
  921. prop: 'boxDynamics',
  922. width: 100,
  923. overHidden: true,
  924. },
  925. // {
  926. // label: '金额',
  927. // prop: 'amount',
  928. // cell: true,
  929. // type: 'number',
  930. // controls: false,
  931. // overHidden: true,
  932. // width: 100,
  933. // rules: [{
  934. // required: true,
  935. // message: "请输入金额",
  936. // trigger: "blur"
  937. // }]
  938. // },
  939. {
  940. label: '币别',
  941. prop: 'currency',
  942. width: 100,
  943. cell: true,
  944. slot: true,
  945. formslot: true,
  946. overHidden: true,
  947. rules: [{
  948. required: true,
  949. message: "请选择币别",
  950. trigger: "blur"
  951. }]
  952. },
  953. {
  954. label: '汇率',
  955. prop: 'exrate',
  956. cell: true,
  957. type: 'number',
  958. controls: false,
  959. overHidden: true,
  960. width: 100,
  961. rules: [{
  962. required: true,
  963. message: "请输入汇率",
  964. trigger: "blur"
  965. }]
  966. },
  967. {
  968. label: '箱东',
  969. prop: 'boxEastName',
  970. overHidden: true,
  971. width: 100,
  972. },
  973. {
  974. label: '原箱东',
  975. prop: 'originalBoxEastName',
  976. cell: true,
  977. slot: true,
  978. formslot: true,
  979. overHidden: true,
  980. width: 100,
  981. },
  982. {
  983. label: '场站',
  984. prop: 'stationCname',
  985. cell: true,
  986. slot: true,
  987. formslot: true,
  988. overHidden: true,
  989. width: 100,
  990. rules: [{
  991. required: true,
  992. message: "请选择场站",
  993. trigger: "blur"
  994. }]
  995. },
  996. {
  997. label: '限制港口',
  998. prop: 'restrictedPortsName',
  999. cell: true,
  1000. slot: true,
  1001. formslot: true,
  1002. overHidden: true,
  1003. width: 200,
  1004. },
  1005. {
  1006. label: '限制船公司',
  1007. prop: 'restrictingShippingCompaniesName',
  1008. cell: true,
  1009. slot: true,
  1010. formslot: true,
  1011. overHidden: true,
  1012. width: 200,
  1013. },
  1014. {
  1015. label: '启用日期',
  1016. prop: 'activationDate',
  1017. // cell: true,
  1018. overHidden: true,
  1019. type: "date",
  1020. format: "yyyy-MM-dd",
  1021. valueFormat: "yyyy-MM-dd HH:mm:ss",
  1022. },
  1023. {
  1024. label: "制单人",
  1025. prop: "createUserName",
  1026. overHidden: true,
  1027. },
  1028. {
  1029. label: "制单日期",
  1030. prop: "createTime",
  1031. type: "date",
  1032. overHidden: true,
  1033. width: 120,
  1034. format: "yyyy-MM-dd",
  1035. valueFormat: "yyyy-MM-dd HH:mm:ss"
  1036. },
  1037. {
  1038. label: "修改人",
  1039. prop: "updateUserName",
  1040. overHidden: true,
  1041. },
  1042. {
  1043. label: "修改日期",
  1044. prop: "updateTime",
  1045. type: "date",
  1046. overHidden: true,
  1047. width: 120,
  1048. format: "yyyy-MM-dd",
  1049. valueFormat: "yyyy-MM-dd HH:mm:ss"
  1050. },
  1051. {
  1052. label: '备注',
  1053. prop: 'remarks',
  1054. cell: true,
  1055. width: 150,
  1056. overHidden: true,
  1057. }]
  1058. },
  1059. feecOption: {},
  1060. feecOptionBack: {
  1061. // height: 'auto',
  1062. calcHeight: 30,
  1063. menuWidth: 60,
  1064. tip: false,
  1065. border: true,
  1066. addBtn: false,
  1067. viewBtn: false,
  1068. editBtn: false,
  1069. delBtn: false,
  1070. refreshBtn: false,
  1071. selection: true,
  1072. align: 'center',
  1073. menu: false,
  1074. summaryText: "合计",
  1075. showSummary: true,
  1076. sumColumnList: [
  1077. {
  1078. name: 'amount',
  1079. type: 'sum',
  1080. decimals: 2
  1081. },
  1082. {
  1083. name: 'amountLoc',
  1084. type: 'sum',
  1085. decimals: 2
  1086. },
  1087. {
  1088. name: 'appliedInvoiceAmount',
  1089. type: 'sum',
  1090. decimals: 2
  1091. },
  1092. {
  1093. name: 'uninvoicedAmount',
  1094. type: 'sum',
  1095. decimals: 2
  1096. },
  1097. {
  1098. name: 'stlTtlAmount',
  1099. type: 'sum',
  1100. decimals: 2
  1101. }
  1102. ],
  1103. column: [
  1104. {
  1105. label: "index",
  1106. prop: "index",
  1107. width: "55",
  1108. headerslot: true,
  1109. },
  1110. {
  1111. label: '账单状态',
  1112. prop: 'accStatus',
  1113. overHidden: true,
  1114. width: 80,
  1115. type: 'select',
  1116. dicData: [{
  1117. label: '未生成',
  1118. value: 0,
  1119. }, {
  1120. label: '已生成',
  1121. value: 1,
  1122. }],
  1123. },
  1124. {
  1125. label: '审核状态',
  1126. prop: 'auditStatus',
  1127. overHidden: true,
  1128. width: 80,
  1129. type: 'select',
  1130. dicData: [{
  1131. label: '录入',
  1132. value: '0',
  1133. }, {
  1134. label: '提交审核',
  1135. value: '1',
  1136. }, {
  1137. label: '审核中',
  1138. value: '2',
  1139. }, {
  1140. label: '审核通过',
  1141. value: '4',
  1142. }],
  1143. },
  1144. {
  1145. label: "类别",
  1146. prop: "billType",
  1147. width: 100,
  1148. overHidden: true,
  1149. cell: true,
  1150. slot: true,
  1151. formslot: true,
  1152. rules: [
  1153. {
  1154. required: true,
  1155. message: '请选择类别',
  1156. trigger: 'blur'
  1157. }
  1158. ]
  1159. },
  1160. {
  1161. label: "付费对象",
  1162. prop: "corpCnName",
  1163. width: "100",
  1164. overHidden: true,
  1165. cell: true,
  1166. slot: true,
  1167. formslot: true,
  1168. rules: [
  1169. {
  1170. required: true,
  1171. message: '请选择付费对象',
  1172. trigger: 'blur'
  1173. }
  1174. ]
  1175. },
  1176. {
  1177. label: "箱号",
  1178. prop: "cntrNo",
  1179. width: 140,
  1180. cell: true,
  1181. slot: true,
  1182. formslot: true,
  1183. overHidden: true,
  1184. },
  1185. {
  1186. label: "费用名称",
  1187. prop: "feeCnName",
  1188. width: "100",
  1189. overHidden: true,
  1190. cell: true,
  1191. slot: true,
  1192. formslot: true,
  1193. rules: [
  1194. {
  1195. required: true,
  1196. message: '请选择费用名称',
  1197. trigger: 'blur'
  1198. }
  1199. ]
  1200. },
  1201. {
  1202. label: "计量单位",
  1203. prop: "unitNo",
  1204. width: "100",
  1205. overHidden: true,
  1206. cell: true,
  1207. slot: true,
  1208. formslot: true,
  1209. },
  1210. {
  1211. label: "币别",
  1212. prop: "curCode",
  1213. width: "100",
  1214. overHidden: true,
  1215. cell: true,
  1216. slot: true,
  1217. formslot: true,
  1218. rules: [
  1219. {
  1220. required: true,
  1221. message: '请选择币别',
  1222. trigger: 'blur'
  1223. }
  1224. ]
  1225. },
  1226. {
  1227. label: "汇率",
  1228. prop: "exrate",
  1229. width: "100",
  1230. overHidden: true,
  1231. cell: true,
  1232. slot: true,
  1233. formslot: true
  1234. },
  1235. {
  1236. label: "单价",
  1237. prop: "price",
  1238. width: "100",
  1239. overHidden: true,
  1240. cell: true,
  1241. slot: true,
  1242. formslot: true,
  1243. rules: [
  1244. {
  1245. required: true,
  1246. message: '请输入单价',
  1247. trigger: 'blur'
  1248. }
  1249. ]
  1250. },
  1251. {
  1252. label: "数量",
  1253. prop: "quantity",
  1254. width: "100",
  1255. overHidden: true,
  1256. cell: true,
  1257. slot: true,
  1258. formslot: true,
  1259. rules: [
  1260. {
  1261. required: true,
  1262. message: '请输入数量',
  1263. trigger: 'blur'
  1264. }
  1265. ]
  1266. },
  1267. {
  1268. label: "金额",
  1269. prop: "amount",
  1270. width: "100",
  1271. overHidden: true,
  1272. },
  1273. {
  1274. label: "外币金额",
  1275. prop: "amountLoc",
  1276. width: "100",
  1277. overHidden: true,
  1278. },
  1279. {
  1280. label: "申请发票金额",
  1281. prop: "appliedInvoiceAmount",
  1282. width: "120",
  1283. overHidden: true,
  1284. },
  1285. {
  1286. label: "已开票金额",
  1287. prop: "uninvoicedAmount",
  1288. width: "120",
  1289. overHidden: true,
  1290. },
  1291. {
  1292. label: "已结算金额",
  1293. prop: "stlTtlAmount",
  1294. width: "120",
  1295. overHidden: true,
  1296. },
  1297. {
  1298. label: "租金天数",
  1299. prop: "days",
  1300. width: "80",
  1301. overHidden: true,
  1302. },
  1303. {
  1304. label: "租金起始",
  1305. prop: "storageDate",
  1306. width: "100",
  1307. overHidden: true,
  1308. type: "date",
  1309. format: "yyyy-MM-dd",
  1310. valueFormat: "yyyy-MM-dd HH:mm:ss"
  1311. },
  1312. {
  1313. label: "租金截止",
  1314. prop: "outboundDate",
  1315. width: "100",
  1316. overHidden: true,
  1317. type: "date",
  1318. format: "yyyy-MM-dd",
  1319. valueFormat: "yyyy-MM-dd HH:mm:ss"
  1320. },
  1321. {
  1322. label: "制单人",
  1323. prop: "createUserName",
  1324. width: "100",
  1325. overHidden: true
  1326. },
  1327. {
  1328. label: "制单日期",
  1329. prop: "createTime",
  1330. width: "120",
  1331. overHidden: true
  1332. },
  1333. {
  1334. label: "修改人",
  1335. prop: "updateUserName",
  1336. width: "100",
  1337. overHidden: true
  1338. },
  1339. {
  1340. label: "修改日期",
  1341. prop: "updateTime",
  1342. width: "120",
  1343. overHidden: true
  1344. },
  1345. {
  1346. label: "备注",
  1347. prop: "remarks",
  1348. cell: true,
  1349. overHidden: true
  1350. }
  1351. ]
  1352. },
  1353. roleName: [],
  1354. updateSearchKey: new Date().getTime(),
  1355. updateFormKey: new Date().getTime(),
  1356. updateStationKey: new Date().getTime(),
  1357. }
  1358. },
  1359. components: {
  1360. dicSelect,
  1361. checkSchedule,
  1362. businessReports,
  1363. reports
  1364. },
  1365. props: {
  1366. detailData: Object
  1367. },
  1368. async created() {
  1369. this.roleName = localStorage.getItem('roleName').split(',')
  1370. this.option = await this.getColumnData(this.getColumnName(473), this.optionBack);
  1371. this.feecOption = await this.getColumnData(this.getColumnName(235.2), this.feecOptionBack);
  1372. if (this.detailData.id) {
  1373. // this.editButton = true
  1374. // this.editDisabled = true
  1375. // this.optionForm.disabled = true
  1376. this.getDetail(this.detailData.id)
  1377. }
  1378. if (this.$route.query.params) {
  1379. this.getDetail(this.$route.query.params)
  1380. }
  1381. if (this.detailData.copyId) {
  1382. this.getCopydate(this.detailData.copyId)
  1383. }
  1384. },
  1385. methods: {
  1386. openRtDialog(row) {
  1387. this.rulesList = row.rentTermList
  1388. this.rtDialog = true
  1389. },
  1390. rowSave(row, list) {
  1391. console.log(row)
  1392. row.rentTermList = list
  1393. this.rtDialog = false
  1394. },
  1395. countChange(row) {
  1396. if (row.curCode == 'CNY') {
  1397. row.amount = _.round(_.multiply(row.price, row.quantity), 2)
  1398. row.amountLoc = 0
  1399. } else {
  1400. row.amount = 0
  1401. row.amountLoc = _.round(_.multiply(row.price, row.quantity), 2)
  1402. }
  1403. },
  1404. activationSubmit() {
  1405. this.$refs["form2"].validate((valid, done) => {
  1406. done();
  1407. if (valid) {
  1408. let obj = {
  1409. id: this.form.id,
  1410. ...this.activationForm,
  1411. tradingBoxItemsList: this.selectionList
  1412. }
  1413. const loading = this.$loading({
  1414. lock: true,
  1415. text: '加载中',
  1416. spinner: 'el-icon-loading',
  1417. background: 'rgba(255,255,255,0.7)'
  1418. });
  1419. enable(obj).then(res => {
  1420. this.$message.success("操作成功!");
  1421. this.getDetail(this.form.id)
  1422. this.activationDialog = false
  1423. }).finally(() => {
  1424. loading.close();
  1425. })
  1426. } else {
  1427. return false;
  1428. }
  1429. });
  1430. },
  1431. uploadBefore(file, done, loading) {
  1432. done();
  1433. loading = true;
  1434. },
  1435. // 上传成功
  1436. onSuccess(res, done, loading, column) {
  1437. if (res.length>0) {
  1438. this.$message.success("上传成功!");
  1439. }
  1440. this.excelBox = false;
  1441. this.getDetail(this.form.id)
  1442. loading = false;
  1443. done();
  1444. },
  1445. // 下载模板
  1446. handleGet() {
  1447. window.open(
  1448. `/api/blade-los/tradingBoxItem/boxItemTemplate?${this.website.tokenHeader
  1449. }=${getToken()}`
  1450. );
  1451. },
  1452. dicChange(name, row) {
  1453. if (name == 'purchaseCompanyName') {
  1454. if (row) {
  1455. this.form.purchaseCompanyId = row.id
  1456. } else {
  1457. this.form.purchaseCompanyId = null
  1458. this.form.purchaseCompanyName = null
  1459. }
  1460. }
  1461. if (name == 'addressCname') {
  1462. if (row) {
  1463. this.form.addressId = row.id
  1464. this.form.addressCode = row.code
  1465. this.form.addressEname = row.enName
  1466. this.form.cyText = row.addressId
  1467. this.form.stationId = null
  1468. this.form.stationCode = null
  1469. this.form.stationCname = null
  1470. this.form.stationEname = null
  1471. this.updateFormKey = new Date().getTime()
  1472. } else {
  1473. this.form.addressId = null
  1474. this.form.addressCode = null
  1475. this.form.addressEname = null
  1476. this.form.addressCname = null
  1477. this.form.cyText = null
  1478. this.form.stationId = null
  1479. this.form.stationCode = null
  1480. this.form.stationCname = null
  1481. this.form.stationEname = null
  1482. }
  1483. }
  1484. if (name == 'stationCname') {
  1485. if (row) {
  1486. this.form.stationId = row.id
  1487. this.form.stationCode = row.code
  1488. this.form.stationEname = row.enName
  1489. } else {
  1490. this.form.stationId = null
  1491. this.form.stationCode = null
  1492. this.form.stationCname = null
  1493. this.form.stationEname = null
  1494. }
  1495. }
  1496. if (name == 'polStationCname') {
  1497. if (row) {
  1498. this.form.polStationId = row.id
  1499. this.form.polStationCode = row.code
  1500. this.form.polStationEname = row.enName
  1501. } else {
  1502. this.form.polStationId = null
  1503. this.form.polStationCode = null
  1504. this.form.polStationEname = null
  1505. this.form.polStationCname = null
  1506. }
  1507. }
  1508. // if (name == 'podCname') {
  1509. // if (row) {
  1510. // this.form.podId = row.id
  1511. // this.form.podCode = row.code
  1512. // this.form.podEname = row.enName
  1513. // } else {
  1514. // this.form.podId = null
  1515. // this.form.podCode = null
  1516. // this.form.podEname = null
  1517. // this.form.podCname = null
  1518. // }
  1519. // }
  1520. if (name == 'polCname') {
  1521. if (row) {
  1522. this.activationForm.polId = row.id
  1523. this.activationForm.polCode = row.code
  1524. this.activationForm.polEname = row.enName
  1525. this.form.cyTextOne = row.addressId
  1526. this.activationForm.polStationId = null
  1527. this.activationForm.polStationCode = null
  1528. this.activationForm.polStationCname = null
  1529. this.activationForm.polStationEname = null
  1530. this.updateStationKey = new Date().getTime()
  1531. } else {
  1532. this.activationForm.polId = null
  1533. this.activationForm.polCode = null
  1534. this.activationForm.polEname = null
  1535. this.activationForm.polCname = null
  1536. this.form.cyTextOne = null
  1537. this.activationForm.polStationId = null
  1538. this.activationForm.polStationCode = null
  1539. this.activationForm.polStationCname = null
  1540. this.activationForm.polStationEname = null
  1541. }
  1542. }
  1543. if (name == 'polStationCname2') {
  1544. if (row) {
  1545. this.activationForm.polStationId = row.id
  1546. this.activationForm.polStationCode = row.code
  1547. this.activationForm.polStationEname = row.enName
  1548. } else {
  1549. this.activationForm.polStationId = null
  1550. this.activationForm.polStationCode = null
  1551. this.activationForm.polStationCname = null
  1552. this.activationForm.polStationEname = null
  1553. }
  1554. }
  1555. if (name == 'podCname') {
  1556. if (row) {
  1557. this.activationForm.podId = row.id
  1558. this.activationForm.podCode = row.code
  1559. this.activationForm.podEname = row.enName
  1560. } else {
  1561. this.activationForm.podId = null
  1562. this.activationForm.podCode = null
  1563. this.activationForm.podEname = null
  1564. this.activationForm.podCname = null
  1565. }
  1566. }
  1567. },
  1568. rowDicChange(name, row, el, index) {
  1569. if (name == 'currency') {
  1570. if (row) {
  1571. bcurrencyGetExrate({ date: this.form.effectiveDate, dc: 'C' }).then(res => {
  1572. res.data.data.forEach(e => {
  1573. if (el.currency == e.code) {
  1574. this.$set(el, 'exrate', e.exrate)
  1575. }
  1576. })
  1577. })
  1578. } else {
  1579. el.exrate = null
  1580. }
  1581. }
  1582. if (name == 'curCode') {
  1583. if (row) {
  1584. bcurrencyGetExrate({ date: this.form.effectiveDate, dc: 'C' }).then(res => {
  1585. res.data.data.forEach(e => {
  1586. if (el.curCode == e.code) {
  1587. this.$set(el, 'exrate', e.exrate)
  1588. this.countChange(el)
  1589. }
  1590. })
  1591. })
  1592. } else {
  1593. el.exrate = null
  1594. }
  1595. }
  1596. if (name == 'feeCnName') {
  1597. if (row) {
  1598. el.feeId = row.id
  1599. el.feeCode = row.code
  1600. } else {
  1601. el.feeId = null
  1602. el.feeCode = null
  1603. el.feeCnName = null
  1604. }
  1605. }
  1606. if (name == 'boxType') {
  1607. if (row) {
  1608. el.boxTypeId = row.id
  1609. } else {
  1610. el.boxTypeId = null
  1611. el.boxType = null
  1612. }
  1613. }
  1614. if (name == 'stationCname') {
  1615. if (row) {
  1616. el.stationId = row.id
  1617. el.stationCode = row.code
  1618. el.stationEname = row.enName
  1619. } else {
  1620. el.stationId = null
  1621. el.stationCode = null
  1622. el.stationCname = null
  1623. el.stationEname = null
  1624. }
  1625. }
  1626. if (name == 'billType') {
  1627. el.corpId = null
  1628. el.shortName = null
  1629. el.corpCnName = null
  1630. el.corpEnName = null
  1631. this.updateSearchKey = new Date().getTime()
  1632. }
  1633. if (name == 'corpCnName') {
  1634. if (row) {
  1635. el.corpId = row.id
  1636. el.shortName = row.shortName
  1637. el.corpEnName = row.enName
  1638. } else {
  1639. el.corpId = null
  1640. el.shortName = null
  1641. el.corpCnName = null
  1642. el.corpEnName = null
  1643. }
  1644. }
  1645. if (name == 'restrictedPortsName') {
  1646. if (row) {
  1647. el.restrictedPortsIds = row.ids
  1648. el.restrictedPortsName = row.names
  1649. } else {
  1650. el.restrictedPortsIds = null
  1651. el.restrictedPortsName = null
  1652. }
  1653. }
  1654. if (name == 'restrictingShippingCompaniesName') {
  1655. console.log(row)
  1656. if (row) {
  1657. el.restrictingShippingCompaniesIds = row.ids
  1658. el.restrictingShippingCompaniesName = row.names
  1659. } else {
  1660. el.restrictingShippingCompaniesIds = null
  1661. el.restrictingShippingCompaniesName = null
  1662. }
  1663. }
  1664. if (name == 'originalBoxEastName') {
  1665. if (row) {
  1666. el.originalBoxEastId = row.id
  1667. } else {
  1668. el.originalBoxEastId = null
  1669. el.originalBoxEastName = null
  1670. }
  1671. }
  1672. },
  1673. rowEdit(row) {
  1674. if (row.$cellEdit == true) {
  1675. this.$set(row, "$cellEdit", false);
  1676. } else {
  1677. this.$set(row, "$cellEdit", true);
  1678. }
  1679. },
  1680. rowItemEdit(row) {
  1681. if (row.$cellEdit == true) {
  1682. this.$set(row, "$cellEdit", false);
  1683. } else {
  1684. this.$set(row, "$cellEdit", true);
  1685. }
  1686. },
  1687. rowItemDel(row, index) {
  1688. this.$confirm("确定删除数据?", {
  1689. confirmButtonText: "确定",
  1690. cancelButtonText: "取消",
  1691. type: "warning"
  1692. }).then(() => {
  1693. if (row.id) {
  1694. tradingBoxItem({ ids: row.id }).then(res => {
  1695. this.rulesList.splice(index, 1);
  1696. this.$message.success("成功删除");
  1697. })
  1698. } else {
  1699. this.rulesList.splice(index, 1);
  1700. }
  1701. });
  1702. },
  1703. boxAddRow() {
  1704. this.form.boxTypeList.push(
  1705. {
  1706. pid: this.form.id ? this.form.id : null,
  1707. $cellEdit: true
  1708. }
  1709. )
  1710. },
  1711. rtAddRow() {
  1712. this.rulesList.push({ curCode: 'CNY', $cellEdit: true })
  1713. },
  1714. addRow() {
  1715. if (!this.form.id) {
  1716. return this.$message.error("请保存数据");
  1717. }
  1718. this.$refs.crud.dicInit();
  1719. bcurrencyGetExrate({ date: this.form.effectiveDate, dc: 'C' }).then(res => {
  1720. res.data.data.forEach(e => {
  1721. if (e.code == 'USD') {
  1722. this.form.tradingBoxItemsList.push({
  1723. pid: this.form.id,
  1724. boxBelongsTo: 'SOC',
  1725. boxCategory: '自有箱',
  1726. boxStatus: '好',
  1727. boxCondition: this.form.boxCondition,
  1728. stationId: this.form.stationId,
  1729. stationCode: this.form.stationCode,
  1730. stationCname: this.form.stationCname,
  1731. stationEname: this.form.stationEname,
  1732. currency: 'USD',
  1733. exrate: e.exrate,
  1734. status: '空箱入场',
  1735. $cellEdit: true
  1736. })
  1737. }
  1738. })
  1739. })
  1740. },
  1741. feecAddRow() {
  1742. if (!this.form.id) {
  1743. return this.$message.error("请保存数据");
  1744. }
  1745. this.form.feeCenterList.push({
  1746. pid: this.form.id,
  1747. feesType: 1,
  1748. dc: 'C',
  1749. billType: '箱东',
  1750. corpId: this.form.purchaseCompanyId,
  1751. shortName: this.form.purchaseCompanyName,
  1752. corpCnName: this.form.purchaseCompanyName,
  1753. curCode: 'CNY',
  1754. exrate: 1,
  1755. $cellEdit: true
  1756. })
  1757. },
  1758. selectionChange(list) {
  1759. this.selectionList = list;
  1760. },
  1761. boxSelectionChange(list) {
  1762. this.boxSelectionList = list;
  1763. },
  1764. feecChange(list) {
  1765. let ids = []
  1766. list.forEach(e => {
  1767. ids.push(e.id)
  1768. })
  1769. if (ids.length) {
  1770. this.itemCIds = ids.join(',')
  1771. } else {
  1772. this.itemCIds = null
  1773. }
  1774. this.selectionfeecList = list;
  1775. },
  1776. getDetail(id) {
  1777. const loading = this.$loading({
  1778. lock: true,
  1779. text: '加载中',
  1780. spinner: 'el-icon-loading',
  1781. background: 'rgba(255,255,255,0.7)'
  1782. });
  1783. detail({ id: id }).then(res => {
  1784. this.form = res.data.data
  1785. this.updateFormKey = new Date().getTime()
  1786. // if (res.data.data.status != '录入') {
  1787. // this.editButton = true
  1788. // this.editDisabled = true
  1789. // this.optionForm.disabled = true
  1790. // }
  1791. }).finally(() => {
  1792. loading.close()
  1793. })
  1794. },
  1795. getCopydate(id) {
  1796. const loading = this.$loading({
  1797. lock: true,
  1798. text: '加载中',
  1799. spinner: 'el-icon-loading',
  1800. background: 'rgba(255,255,255,0.7)'
  1801. });
  1802. copyAgent({ id: id }).then(res => {
  1803. this.form = res.data.data
  1804. this.updateFormKey = new Date().getTime()
  1805. }).finally(() => {
  1806. loading.close()
  1807. })
  1808. },
  1809. inEdit() {
  1810. this.editButton = false
  1811. if (this.form.status == '录入') {
  1812. this.editDisabled = false
  1813. this.optionForm.disabled = false
  1814. }
  1815. },
  1816. rowDel(row, index) {
  1817. this.$confirm("确定删除数据?", {
  1818. confirmButtonText: "确定",
  1819. cancelButtonText: "取消",
  1820. type: "warning"
  1821. }).then(() => {
  1822. if (row.id) {
  1823. tradingBoxItem({ ids: row.id }).then(res => {
  1824. this.form.tradingBoxItemsList.splice(index, 1);
  1825. this.$message.success("成功删除");
  1826. })
  1827. } else {
  1828. this.form.tradingBoxItemsList.splice(index, 1);
  1829. }
  1830. });
  1831. },
  1832. polRowDel(row, index) {
  1833. this.$confirm("确定删除数据?", {
  1834. confirmButtonText: "确定",
  1835. cancelButtonText: "取消",
  1836. type: "warning"
  1837. }).then(() => {
  1838. if (row.id) {
  1839. tradingBoxFees({ ids: row.id }).then(res => {
  1840. this.form.feeCenterList.splice(index, 1);
  1841. this.$message.success("成功删除");
  1842. })
  1843. } else {
  1844. this.form.feeCenterList.splice(index, 1);
  1845. }
  1846. });
  1847. },
  1848. podRowDel(row, index) {
  1849. this.$confirm("确定删除数据?", {
  1850. confirmButtonText: "确定",
  1851. cancelButtonText: "取消",
  1852. type: "warning"
  1853. }).then(() => {
  1854. if (row.id) {
  1855. tradingBoxFees({ ids: row.id }).then(res => {
  1856. this.podFeeList.splice(index, 1);
  1857. this.$message.success("成功删除");
  1858. })
  1859. } else {
  1860. this.podFeeList.splice(index, 1);
  1861. }
  1862. });
  1863. },
  1864. allClick(name) {
  1865. if (name == 'box一键保存') {
  1866. if (!this.form.boxTypeList.length) {
  1867. return this.$message.error("请添加数据");
  1868. }
  1869. for (let row of this.form.boxTypeList) {
  1870. if (!row.boxType || !row.number || !row.price) {
  1871. this.$refs.crudBox.rowCell(row, row.$index)
  1872. return this.$message.error("请完善箱型箱量");
  1873. }
  1874. }
  1875. const loading = this.$loading({
  1876. lock: true,
  1877. text: '加载中',
  1878. spinner: 'el-icon-loading',
  1879. background: 'rgba(255,255,255,0.7)'
  1880. });
  1881. submitBoxList(this.form.boxTypeList).then(res => {
  1882. this.$message.success("保存成功");
  1883. this.form.boxTypeList = res.data.data
  1884. }).finally(() => {
  1885. loading.close();
  1886. })
  1887. }
  1888. if (name == 'box一键编辑') {
  1889. for (let row of this.form.boxTypeList) {
  1890. this.$set(row, "$cellEdit", true);
  1891. }
  1892. }
  1893. if (name == 'box批量删除') {
  1894. for (let item of this.selectionList) {
  1895. if (item.whetherEnable == '是') {
  1896. return this.$message.error("启用状态不能删除!");
  1897. }
  1898. }
  1899. let multiList = []
  1900. let arr = []
  1901. this.$confirm("确定将选择数据删除?", {
  1902. confirmButtonText: "确定",
  1903. cancelButtonText: "取消",
  1904. type: "warning"
  1905. }).then(() => {
  1906. multiList = this.boxSelectionList
  1907. arr = this.form.boxTypeList
  1908. // 获取有id 的数据
  1909. const itemsWithId = multiList.filter(item => item.id != null);
  1910. let arrIds = itemsWithId.map(item => item.id) // 获取id 数据
  1911. // 把选中的删除掉
  1912. multiList.forEach((item) => {
  1913. for (let index in arr) {
  1914. if (JSON.stringify(item) == JSON.stringify(arr[index])) {
  1915. arr.splice(Number(index), 1)
  1916. }
  1917. }
  1918. })
  1919. if (itemsWithId.length != 0) {
  1920. const loading = this.$loading({
  1921. lock: true,
  1922. text: '加载中',
  1923. spinner: 'el-icon-loading',
  1924. background: 'rgba(255,255,255,0.7)'
  1925. });
  1926. boxRemove({ ids: arrIds.join(',') }).then(res => {
  1927. this.$message.success("删除成功");
  1928. }).finally(() => {
  1929. loading.close();
  1930. })
  1931. }
  1932. })
  1933. }
  1934. if (name == '一键保存') {
  1935. if (!this.form.tradingBoxItemsList.length) {
  1936. return this.$message.error("请添加数据");
  1937. }
  1938. for (let row of this.form.tradingBoxItemsList) {
  1939. if (!row.code || !row.boxType || !row.boxCategory || !row.boxStatus || !row.boxCondition || !row.currency || !row.exrate || !row.stationCname || !row.status) {
  1940. this.$refs.crud.rowCell(row, row.$index)
  1941. return this.$message.error("请完善箱明细信息");
  1942. }
  1943. }
  1944. const loading = this.$loading({
  1945. lock: true,
  1946. text: '加载中',
  1947. spinner: 'el-icon-loading',
  1948. background: 'rgba(255,255,255,0.7)'
  1949. });
  1950. submitItemList(this.form.tradingBoxItemsList).then(res => {
  1951. this.$message.success("保存成功");
  1952. this.form.tradingBoxItemsList = res.data.data
  1953. }).finally(() => {
  1954. loading.close();
  1955. })
  1956. }
  1957. if (name == '一键编辑') {
  1958. for (let row of this.form.tradingBoxItemsList) {
  1959. if (row.whetherEnable != '是') {
  1960. this.$set(row, "$cellEdit", true);
  1961. }
  1962. }
  1963. this.$refs.crud.dicInit();
  1964. }
  1965. if (name == '批量删除') {
  1966. for (let item of this.selectionList) {
  1967. if (item.whetherEnable == '是') {
  1968. return this.$message.error("启用状态不能删除!");
  1969. }
  1970. }
  1971. let multiList = []
  1972. let arr = []
  1973. this.$confirm("确定将选择数据删除?", {
  1974. confirmButtonText: "确定",
  1975. cancelButtonText: "取消",
  1976. type: "warning"
  1977. }).then(() => {
  1978. multiList = this.selectionList
  1979. arr = this.form.tradingBoxItemsList
  1980. // 获取有id 的数据
  1981. const itemsWithId = multiList.filter(item => item.id != null);
  1982. let arrIds = itemsWithId.map(item => item.id) // 获取id 数据
  1983. // 把选中的删除掉
  1984. multiList.forEach((item) => {
  1985. for (let index in arr) {
  1986. if (JSON.stringify(item) == JSON.stringify(arr[index])) {
  1987. arr.splice(Number(index), 1)
  1988. }
  1989. }
  1990. })
  1991. if (itemsWithId.length != 0) {
  1992. const loading = this.$loading({
  1993. lock: true,
  1994. text: '加载中',
  1995. spinner: 'el-icon-loading',
  1996. background: 'rgba(255,255,255,0.7)'
  1997. });
  1998. tradingBoxItem({ ids: arrIds.join(',') }).then(res => {
  1999. this.$message.success("删除成功");
  2000. }).finally(() => {
  2001. loading.close();
  2002. })
  2003. }
  2004. })
  2005. }
  2006. if (name == '起租') {
  2007. let _this = this
  2008. this.$DialogForm.show({
  2009. title: '起租',
  2010. width: '30%',
  2011. menuPosition: 'right',
  2012. option: {
  2013. submitText: '确定',
  2014. emptyText: '取消',
  2015. span: 24,
  2016. column: [{
  2017. label: "起租日期",
  2018. prop: "value",
  2019. type: "date",
  2020. format: "yyyy-MM-dd",
  2021. valueFormat: "yyyy-MM-dd HH:mm:ss",
  2022. value: _this.form.effectiveDate,
  2023. pickerOptions: {
  2024. disabledDate(time) {
  2025. return time.getTime() < new Date(_this.form.effectiveDate).getTime();
  2026. },
  2027. },
  2028. rules: [{
  2029. required: true,
  2030. message: "请选择起租日期",
  2031. trigger: "blur",
  2032. }],
  2033. }]
  2034. },
  2035. beforeClose: (done) => {
  2036. done()
  2037. },
  2038. callback: (res) => {
  2039. res.done()
  2040. this.$confirm('是否起租?', '提示', {
  2041. confirmButtonText: '确定',
  2042. cancelButtonText: '取消',
  2043. type: 'warning'
  2044. }).then(() => {
  2045. let obj = {
  2046. ...this.form,
  2047. rentType: 1,
  2048. rentDate: res.data.value
  2049. }
  2050. const loading = this.$loading({
  2051. lock: true,
  2052. text: '加载中',
  2053. spinner: 'el-icon-loading',
  2054. background: 'rgba(255,255,255,0.7)'
  2055. });
  2056. startingRent(obj).then(res => {
  2057. this.$message.success("操作成功!");
  2058. this.getDetail(this.form.id)
  2059. }).finally(() => {
  2060. loading.close();
  2061. })
  2062. res.close()
  2063. })
  2064. }
  2065. })
  2066. }
  2067. if (name == '生成租金') {
  2068. let date = new Date(this.form.rentEndDate)
  2069. date.setDate(date.getDate() + 1);
  2070. date = dateFormat(date, 'yyyy-MM-dd') + ' 00:00:00'
  2071. this.$DialogForm.show({
  2072. title: '生成租金',
  2073. width: '30%',
  2074. menuPosition: 'right',
  2075. option: {
  2076. submitText: '确定',
  2077. emptyText: '取消',
  2078. labelWidth: '100',
  2079. span: 24,
  2080. column: [{
  2081. label: "租金截至日期",
  2082. prop: "value",
  2083. type: "date",
  2084. format: "yyyy-MM-dd",
  2085. valueFormat: "yyyy-MM-dd HH:mm:ss",
  2086. value: date,
  2087. pickerOptions: {
  2088. disabledDate(time) {
  2089. const date2 = new Date(date)
  2090. // date.setDate(date.getDate() + 1);
  2091. return time.getTime() < date2.getTime();
  2092. },
  2093. },
  2094. rules: [{
  2095. required: true,
  2096. message: "请选择日期",
  2097. trigger: "blur",
  2098. }],
  2099. }]
  2100. },
  2101. beforeClose: (done) => {
  2102. done()
  2103. },
  2104. callback: (res) => {
  2105. res.done()
  2106. this.$confirm('是否生成租金?', '提示', {
  2107. confirmButtonText: '确定',
  2108. cancelButtonText: '取消',
  2109. type: 'warning'
  2110. }).then(() => {
  2111. let obj = {
  2112. ...this.form,
  2113. rentDate: res.data.value
  2114. }
  2115. const loading = this.$loading({
  2116. lock: true,
  2117. text: '加载中',
  2118. spinner: 'el-icon-loading',
  2119. background: 'rgba(255,255,255,0.7)'
  2120. });
  2121. rentCalculation(obj).then(res => {
  2122. this.$message.success("操作成功!");
  2123. this.getDetail(this.form.id)
  2124. }).finally(() => {
  2125. loading.close();
  2126. })
  2127. res.close()
  2128. })
  2129. }
  2130. })
  2131. }
  2132. if (name == '撤销租金') {
  2133. this.$confirm('是否撤销租金?', '提示', {
  2134. confirmButtonText: '确定',
  2135. cancelButtonText: '取消',
  2136. type: 'warning'
  2137. }).then(() => {
  2138. const loading = this.$loading({
  2139. lock: true,
  2140. text: '加载中',
  2141. spinner: 'el-icon-loading',
  2142. background: 'rgba(255,255,255,0.7)'
  2143. });
  2144. revokeRentCalculation(this.form).then(res => {
  2145. this.$message.success("操作成功!");
  2146. this.getDetail(this.form.id)
  2147. }).finally(() => {
  2148. loading.close();
  2149. })
  2150. })
  2151. }
  2152. if (name == '退租') {
  2153. let date = new Date(this.form.rentEndDate)
  2154. date.setDate(date.getDate() + 1);
  2155. date = dateFormat(date, 'yyyy-MM-dd') + ' 00:00:00'
  2156. this.$DialogForm.show({
  2157. title: '退租',
  2158. width: '30%',
  2159. menuPosition: 'right',
  2160. option: {
  2161. submitText: '确定',
  2162. emptyText: '取消',
  2163. span: 24,
  2164. column: [{
  2165. label: "退租日期",
  2166. prop: "value",
  2167. type: "date",
  2168. format: "yyyy-MM-dd",
  2169. valueFormat: "yyyy-MM-dd HH:mm:ss",
  2170. value: date,
  2171. pickerOptions: {
  2172. disabledDate(time) {
  2173. const date2 = new Date(date)
  2174. // date.setDate(date.getDate() + 1);
  2175. return time.getTime() < date2.getTime();
  2176. },
  2177. },
  2178. rules: [{
  2179. required: true,
  2180. message: "请选择退租起租日期",
  2181. trigger: "blur",
  2182. }],
  2183. }]
  2184. },
  2185. beforeClose: (done) => {
  2186. done()
  2187. },
  2188. callback: (res) => {
  2189. res.done()
  2190. this.$confirm('是否退租?', '提示', {
  2191. confirmButtonText: '确定',
  2192. cancelButtonText: '取消',
  2193. type: 'warning'
  2194. }).then(() => {
  2195. let obj = {
  2196. ...this.form,
  2197. rentType: 2,
  2198. rentDate: res.data.value
  2199. }
  2200. const loading = this.$loading({
  2201. lock: true,
  2202. text: '加载中',
  2203. spinner: 'el-icon-loading',
  2204. background: 'rgba(255,255,255,0.7)'
  2205. });
  2206. startingRent(obj).then(res => {
  2207. this.$message.success("操作成功!");
  2208. this.getDetail(this.form.id)
  2209. }).finally(() => {
  2210. loading.close();
  2211. })
  2212. res.close()
  2213. })
  2214. }
  2215. })
  2216. }
  2217. if (name == '撤销退租') {
  2218. this.$confirm('是否撤销退租?', '提示', {
  2219. confirmButtonText: '确定',
  2220. cancelButtonText: '取消',
  2221. type: 'warning'
  2222. }).then(() => {
  2223. const loading = this.$loading({
  2224. lock: true,
  2225. text: '加载中',
  2226. spinner: 'el-icon-loading',
  2227. background: 'rgba(255,255,255,0.7)'
  2228. });
  2229. revokeRentingOut(this.form).then(res => {
  2230. this.$message.success("操作成功!");
  2231. this.getDetail(this.form.id)
  2232. }).finally(() => {
  2233. loading.close();
  2234. })
  2235. })
  2236. }
  2237. if (name == '导入') {
  2238. this.excelOption.column.forEach(item => {
  2239. if (item.prop == 'excelFile') {
  2240. item.action = "/api/blade-los/tradingBoxItem/importBoxItem?id=" + this.form.id
  2241. }
  2242. })
  2243. this.excelBox = true
  2244. }
  2245. if (name == '启用') {
  2246. for (let item of this.selectionList) {
  2247. if (item.whetherEnable == '是') {
  2248. return this.$message.error("请勿重复启用");
  2249. }
  2250. }
  2251. this.form.cyTextOne = this.form.cyText
  2252. this.activationForm = {
  2253. containerNumber: null,
  2254. polId: this.form.addressId,
  2255. polCode: this.form.addressCode,
  2256. polEname: this.form.addressEname,
  2257. polCname: this.form.addressCname,
  2258. polStationId: this.form.stationId,
  2259. polStationCode: this.form.stationCode,
  2260. polStationCname: this.form.stationCname,
  2261. polStationEname: this.form.stationEname,
  2262. podId: null,
  2263. podCode: null,
  2264. podEname: null,
  2265. podCname: null,
  2266. activationDate: null,
  2267. }
  2268. this.activationDialog = true
  2269. }
  2270. if (name == '费用一键保存') {
  2271. if (!this.form.feeCenterList.length) {
  2272. return this.$message.error("请添加数据");
  2273. }
  2274. for (let row of this.form.feeCenterList) {
  2275. if (!row.billType || !row.corpCnName || !row.feeCnName || !row.curCode || !row.price || !row.quantity) {
  2276. this.$refs.crud2.rowCell(row, row.$index)
  2277. return this.$message.error("请完善费用明细");
  2278. }
  2279. }
  2280. const loading = this.$loading({
  2281. lock: true,
  2282. text: '加载中',
  2283. spinner: 'el-icon-loading',
  2284. background: 'rgba(255,255,255,0.7)'
  2285. });
  2286. submitFeeList(this.form.feeCenterList).then(res => {
  2287. this.$message.success("保存成功");
  2288. this.form.feeCenterList = res.data.data
  2289. }).finally(() => {
  2290. loading.close();
  2291. })
  2292. }
  2293. if (name == '费用一键编辑') {
  2294. for (let row of this.form.feeCenterList) {
  2295. if (!row.stlPid && (row.accStatus == 0||row.auditStatus== 0)) {
  2296. this.$set(row, "$cellEdit", true);
  2297. }
  2298. }
  2299. }
  2300. if (name == '费用批量删除') {
  2301. for (let row of this.selectionfeecList) {
  2302. if (row.feeCode == 'BOX-YJ' || row.feeCode == 'BOX-ZJ') {
  2303. return this.$message.error("押金和租箱费不允许删除");
  2304. }
  2305. if (row.stlPid && row.accStatus != 0) {
  2306. return this.$message.error("已生成账单,不允许删除");
  2307. }
  2308. if (row.stlPid && row.auditStatus != 0) {
  2309. return this.$message.error("已申请费用,不允许删除");
  2310. }
  2311. }
  2312. let multiList = []
  2313. let arr = []
  2314. this.$confirm("确定将选择数据删除?", {
  2315. confirmButtonText: "确定",
  2316. cancelButtonText: "取消",
  2317. type: "warning"
  2318. }).then(() => {
  2319. multiList = this.selectionfeecList
  2320. arr = this.form.feeCenterList
  2321. // 获取有id 的数据
  2322. const itemsWithId = multiList.filter(item => item.id != null);
  2323. let arrIds = itemsWithId.map(item => item.id) // 获取id 数据
  2324. // 把选中的删除掉
  2325. multiList.forEach((item) => {
  2326. for (let index in arr) {
  2327. if (JSON.stringify(item) == JSON.stringify(arr[index])) {
  2328. arr.splice(Number(index), 1)
  2329. }
  2330. }
  2331. })
  2332. if (itemsWithId.length != 0) {
  2333. const loading = this.$loading({
  2334. lock: true,
  2335. text: '加载中',
  2336. spinner: 'el-icon-loading',
  2337. background: 'rgba(255,255,255,0.7)'
  2338. });
  2339. tradingBoxFees({ ids: arrIds.join(',') }).then(res => {
  2340. this.$message.success("删除成功");
  2341. }).finally(() => {
  2342. loading.close();
  2343. })
  2344. }
  2345. })
  2346. }
  2347. if (name == '费用申请') {
  2348. for (let row of this.selectionfeecList) {
  2349. if (row.stlPid && row.accStatus != 0) {
  2350. return this.$message.error("已生成账单,不允许重复申请");
  2351. }
  2352. if (row.stlPid && row.auditStatus != 0) {
  2353. return this.$message.error("已申请费用,不允许重复申请");
  2354. }
  2355. }
  2356. this.$confirm("确定申请费用?", {
  2357. confirmButtonText: "确定",
  2358. cancelButtonText: "取消",
  2359. type: "warning"
  2360. }).then(() => {
  2361. let obj = {}
  2362. obj = {
  2363. srcId: this.form.id,
  2364. srcType: this.form.type,
  2365. feeCenterList: this.selectionfeecList,
  2366. url: '/boxManagement/rentalBox/index',
  2367. pageStatus: '',
  2368. pageLabel: '租箱',
  2369. }
  2370. const loading = this.$loading({
  2371. lock: true,
  2372. text: '加载中',
  2373. spinner: 'el-icon-loading',
  2374. background: 'rgba(255,255,255,0.7)'
  2375. });
  2376. pleaseVerifyCost(obj).then(res => {
  2377. this.$message.success("操作成功");
  2378. this.getDetail(this.form.id)
  2379. }).finally(() => {
  2380. loading.close();
  2381. })
  2382. });
  2383. }
  2384. },
  2385. submit(type) {
  2386. this.$refs["form"].validate((valid, done) => {
  2387. done();
  2388. if (valid) {
  2389. for (let row of this.form.boxTypeList) {
  2390. if (!row.boxType || !row.number || !row.price) {
  2391. this.$refs.crudBox.rowCell(row, row.$index)
  2392. return this.$message.error("请完善箱型箱量");
  2393. }
  2394. }
  2395. for (let row of this.form.tradingBoxItemsList) {
  2396. if (!row.code || !row.boxType || !row.boxCategory || !row.boxStatus || !row.boxCondition || !row.currency || !row.exrate || !row.stationCname || !row.status) {
  2397. this.$refs.crud.rowCell(row, row.$index)
  2398. return this.$message.error("请完善箱明细信息");
  2399. }
  2400. }
  2401. for (let row of this.form.feeCenterList) {
  2402. if (!row.billType || !row.corpCnName || !row.feeCnName || !row.curCode || !row.price || !row.quantity) {
  2403. this.$refs.crud2.rowCell(row, row.$index)
  2404. return this.$message.error("请完善费用明细");
  2405. }
  2406. }
  2407. const loading = this.$loading({
  2408. lock: true,
  2409. text: '加载中',
  2410. spinner: 'el-icon-loading',
  2411. background: 'rgba(255,255,255,0.7)'
  2412. });
  2413. submit(this.form).then(res => {
  2414. this.$message.success("保存成功");
  2415. this.getDetail(res.data.data.id)
  2416. }).finally(() => {
  2417. loading.close();
  2418. })
  2419. } else {
  2420. return false;
  2421. }
  2422. });
  2423. },
  2424. application() {
  2425. this.$confirm("确定请核数据?", {
  2426. confirmButtonText: "确定",
  2427. cancelButtonText: "取消",
  2428. type: "warning"
  2429. }).then(() => {
  2430. let obj = {}
  2431. obj = {
  2432. id: this.form.id,
  2433. url: '/iosBasicData/costcenter/coc/index',
  2434. pageStatus: '',
  2435. pageLabel: '航线成本(COC)',
  2436. }
  2437. const loading = this.$loading({
  2438. lock: true,
  2439. text: '加载中',
  2440. spinner: 'el-icon-loading',
  2441. background: 'rgba(255,255,255,0.7)'
  2442. });
  2443. pleaseCheck(obj).then(res => {
  2444. this.$message.success("请核成功");
  2445. this.getDetail(res.data.data.id)
  2446. }).finally(() => {
  2447. loading.close();
  2448. })
  2449. });
  2450. },
  2451. revokeApplication() {
  2452. this.$confirm("确定撤销请核?", {
  2453. confirmButtonText: "确定",
  2454. cancelButtonText: "取消",
  2455. type: "warning"
  2456. }).then(() => {
  2457. let obj = {}
  2458. obj = {
  2459. id: this.form.id,
  2460. }
  2461. const loading = this.$loading({
  2462. lock: true,
  2463. text: '加载中',
  2464. spinner: 'el-icon-loading',
  2465. background: 'rgba(255,255,255,0.7)'
  2466. });
  2467. repealCancel(obj).then(res => {
  2468. this.$message.success("撤销请核成功");
  2469. this.getDetail(res.data.data.id)
  2470. this.editDisabled = false
  2471. this.optionForm.disabled = false
  2472. }).finally(() => {
  2473. loading.close();
  2474. })
  2475. });
  2476. },
  2477. //请核关闭
  2478. choceScheduleFun() {
  2479. this.checkScheduleDialog = false
  2480. },
  2481. //自定义列保存
  2482. async saveColumn(ref, option, optionBack, code) {
  2483. const inSave = await this.saveColumnData(this.getColumnName(code), this[option]);
  2484. if (inSave) {
  2485. this.$message.success("保存成功");
  2486. //关闭窗口
  2487. this.$refs[ref].$refs.dialogColumn.columnBox = false;
  2488. }
  2489. },
  2490. //自定义列重置
  2491. async resetColumn(ref, option, optionBack, code) {
  2492. this[option] = this[optionBack];
  2493. const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);
  2494. if (inSave) {
  2495. this.$message.success("重置成功");
  2496. this.$refs[ref].$refs.dialogColumn.columnBox = false;
  2497. }
  2498. },
  2499. // 更改表格颜色
  2500. headerClassName(tab) {
  2501. //颜色间隔
  2502. let back = ""
  2503. if (tab.columnIndex >= 0 && tab.column.level === 1) {
  2504. if (tab.columnIndex % 2 === 0) {
  2505. back = "back-one"
  2506. } else if (tab.columnIndex % 2 === 1) {
  2507. back = "back-two"
  2508. }
  2509. }
  2510. return back;
  2511. },
  2512. goBack(type) {
  2513. this.$emit("goBack");
  2514. },
  2515. },
  2516. watch: {
  2517. // 监听业务类型 如果不是分单 可以编辑分单号
  2518. 'form.tradingBoxItemsList': {
  2519. // 执行方法
  2520. handler(oldValue, newValue) {
  2521. if (this.form.tradingBoxItemsList.length > 0) {
  2522. this.optionForm.column.forEach(item => {
  2523. if (item.prop == 'contractNo' || item.prop == 'effectiveDate' || item.prop == 'expiryDate' || item.prop == 'standard' || item.prop == 'totalAmountC') {
  2524. item.disabled = true
  2525. }
  2526. })
  2527. } else {
  2528. this.optionForm.column.forEach(item => {
  2529. if (item.prop == 'contractNo' || item.prop == 'effectiveDate' || item.prop == 'expiryDate' || item.prop == 'standard' || item.prop == 'totalAmountC') {
  2530. item.disabled = false
  2531. }
  2532. })
  2533. }
  2534. },
  2535. deep: true, // 深度监听
  2536. immediate: true // 第一次改变就执行
  2537. },
  2538. }
  2539. }
  2540. </script>
  2541. <style lang="scss" scoped>
  2542. ::v-deep .el-form-item__error {
  2543. display: none !important;
  2544. }
  2545. ::v-deep .el-form-item {
  2546. margin-bottom: 8px !important;
  2547. }
  2548. ::v-deep .el-table .cell {
  2549. padding: 0 2px !important;
  2550. .el-form-item {
  2551. margin-bottom: 0px !important;
  2552. }
  2553. }
  2554. ::v-deep .avue-crud .el-table .el-form-item__label {
  2555. left: -1px;
  2556. }
  2557. // ::v-deep#out-table .back-one {
  2558. // background: #ecf5ff !important;
  2559. // }
  2560. // ::v-deep#out-table .back-two {
  2561. // background: #ecf5ff !important;
  2562. // }
  2563. ::v-deep #out-table .back-one {
  2564. background: #ecf5ff !important;
  2565. text-align: center;
  2566. padding: 4px 0;
  2567. }
  2568. ::v-deep #out-table .back-two {
  2569. background: #ecf5ff !important;
  2570. text-align: center;
  2571. padding: 4px 0;
  2572. }
  2573. ::v-deep .el-table--small td,
  2574. .el-table--small th {
  2575. padding: 2px !important;
  2576. }
  2577. ::v-deep .el-card__body {
  2578. padding: 3px 10px;
  2579. }
  2580. ::v-deep .box-card .el-card__body {
  2581. padding: 4px !important;
  2582. }
  2583. .disabledBox {
  2584. display: flex;
  2585. align-items: center;
  2586. }
  2587. .meetSize {
  2588. font-size: 16px;
  2589. color: #54BCBD;
  2590. }
  2591. </style>