From d9f8ae99586ff3e4f1e86fee447d7ffd715e8b10 Mon Sep 17 00:00:00 2001 From: value <z1292839451@163.com> Date: 星期五, 26 四月 2024 09:10:03 +0800 Subject: [PATCH] 检验项目绑定产品,检验对象绑定产品 --- src/components/tool/value-table.vue | 1850 +++++++++++++++++++++++++++++------------------------------ 1 files changed, 918 insertions(+), 932 deletions(-) diff --git a/src/components/tool/value-table.vue b/src/components/tool/value-table.vue index 5c37a1e..593b320 100644 --- a/src/components/tool/value-table.vue +++ b/src/components/tool/value-table.vue @@ -1,95 +1,95 @@ <style scoped> - .value-table { - width: 100%; - height: 100%; - overflow-y: auto; - } + .value-table { + width: 100%; + height: 100%; + overflow-y: auto; + } - .table { - width: 100%; - height: calc(100% - 42px); - } + .table { + width: 100%; + height: calc(100% - 42px); + } - .page { - width: 100%; - height: 30px; - text-align: right; - margin-top: 10px; - } + .page { + width: 100%; + height: 30px; + text-align: right; + margin-top: 10px; + } - .down-left { - width: 50%; - display: flex; - align-items: center; - justify-content: center; - } + .down-left { + width: 50%; + display: flex; + align-items: center; + justify-content: center; + } - .down-right { - width: 50%; - display: flex; - align-items: center; - justify-content: center; - } + .down-right { + width: 50%; + display: flex; + align-items: center; + justify-content: center; + } - .body { - overflow-x: hidden; - } + .body { + overflow-x: hidden; + } - .handleBtn{ + .handleBtn { border: none; padding: 0; color: #409EFF; background: transparent; } - .handleBtn:hover{ + .handleBtn:hover { background: transparent; } - .handleBtn.is-disabled{ + .handleBtn.is-disabled { color: #C0C4CC; } - </style> <style> - /* .value-table .highlight-warning-row-border td { + /* .value-table .highlight-warning-row-border td { border-top: 2px solid #ffcd29; border-bottom: 2px solid #ffcd29; } */ - .value-table .highlight-warning-row-border td:first-child { - border-left: 4px solid #ffcd29; - } + .value-table .highlight-warning-row-border td:first-child { + border-left: 4px solid #ffcd29; + } - .value-table .highlight-warning-row-border td:last-child { - border-right: 4px solid #ffcd29; - } + .value-table .highlight-warning-row-border td:last-child { + border-right: 4px solid #ffcd29; + } - /* .value-table .highlight-danger-row-border td { + /* .value-table .highlight-danger-row-border td { border-top: 2px solid red; border-bottom: 2px solid red; } */ - .value-table .highlight-danger-row-border td:first-child { - border-left: 4px solid #f56c6c; - } + .value-table .highlight-danger-row-border td:first-child { + border-left: 4px solid #f56c6c; + } - .value-table .highlight-danger-row-border td:last-child { - border-right: 4px solid #f56c6c; - } + .value-table .highlight-danger-row-border td:last-child { + border-right: 4px solid #f56c6c; + } - .value-table .el-upload { - width: 100%; - } + .value-table .el-upload { + width: 100%; + } - .value-table .el-upload-dragger { - width: 100%; - } + .value-table .el-upload-dragger { + width: 100%; + } - .handleBtn.is-disabled .el-upload:focus{ + .handleBtn.is-disabled .el-upload:focus { color: #C0C4CC !important; } - .avatar-uploader .el-upload{ + + .avatar-uploader .el-upload { height: 80px; display: flex; align-items: center; @@ -98,412 +98,383 @@ </style> <template> - <div class="value-table"> - <div class="table" :style="data.isPage!=undefined&&data.isPage!=true?'height:100%':''"> - <el-table ref="eltable" :data="tableData" style="width: 100%;" height="100%" - tooltip-effect="dark" border - @selection-change="selectChange" @select="select" v-loading="loading" @sort-change="sortChange" - @row-click="rowClick" :show-summary="data.countFleid!=undefined && data.countFleid.length > 0" - :summary-method="getSummaries" :row-class-name="tableRowClassName" - :row-key="record=>record.id" :current-row-key="data.currentId" - :highlight-current-row="data.highlight===undefined||data.highlight" + <div class="value-table"> + <div class="table" :style="data.isPage!=undefined&&data.isPage!=true?'height:100%':''"> + <el-table ref="eltable" :data="tableData" style="width: 100%;" height="100%" tooltip-effect="dark" border + @selection-change="selectChange" @select="select" v-loading="loading" @sort-change="sortChange" + @row-click="rowClick" :show-summary="data.countFleid!=undefined && data.countFleid.length > 0" + :summary-method="getSummaries" :row-class-name="tableRowClassName" :row-key="record=>record.id" + :current-row-key="data.currentId" :highlight-current-row="data.highlight===undefined||data.highlight" :span-method="spanMethod"> - <el-table-column type="selection" width="65" v-if="data.showSelect" :key="Math.random()"> - </el-table-column> - <el-table-column type="index" align="center" label="搴忓彿" width="65" v-if="data.isIndex" :key="Math.random()"> - </el-table-column> - <el-table-column :prop="a.label" :label="a.value" :sortable="data.sort==false?false:'custom'" - v-for="(a, ai) in tableHead" :key="ai" show-overflow-tooltip min-width="155"> - <template slot-scope="scope"> - <div v-if="showType(a.label, data.tagField) != null"> - <template v-if="typeof(scope.row[a.label]) == 'object'"> - <template v-for="(param, i) in scope.row[a.label]"> - <el-tag v-for="(b, bi) in data.tagField[a.label].select" :key="bi" v-if="b.value == param" - :type="b.type" size="medium" style="margin-right: 5px;">{{b.label}}</el-tag> - </template> - </template> - <template v-else> - <el-tag v-for="(b, bi) in data.tagField[a.label].select" :key="bi" v-if="b.value == scope.row[a.label]" - :type="b.type" size="medium">{{b.label}}</el-tag> - </template> - </div> - <!-- 鍙搷浣滆杩涜鐐瑰嚮浜嬩欢 --> - <span v-else-if="data.linkEvent&&showLink(a.label, data.linkEvent)" style="color:#409EFF;cursor: pointer;" - @click="handleLinkEvent(scope.row,data.linkEvent[a.label])">{{scope.row[a.label]}}</span> - <img style="width: 40px;height: 40px;margin-top: 10px;" :src="javaApi+'/img/'+scope.row[a.label]" v-else-if="showUpload(a.label)&&scope.row[a.label]" alt=""> - <span v-else-if="showCascader(a.label)&&scope.row[a.label]">{{handleTree(data.cascaderField[a.label].tree,scope.row[a.label].split(',')[scope.row[a.label].split(',').length-1])}}</span> - <span v-else>{{scope.row[a.label]}}</span> - </template> - </el-table-column> - <el-table-column fixed="right" align="center" label="鎿嶄綔" :width="getWidth()" v-if="data.do.length > 0"> - <template slot-scope="scope"> - <el-button v-for="(a, ai) in data.do" :key="ai" :type="a.type" - :disabled="a.disabFun ? a.disabFun(scope.row,scope.$index) : false" - @click="main(scope.row, a)" class="handleBtn"> + <el-table-column type="selection" width="65" v-if="data.showSelect" :key="Math.random()"> + </el-table-column> + <el-table-column type="index" align="center" label="搴忓彿" width="65" v-if="data.isIndex" :key="Math.random()"> + </el-table-column> + <el-table-column :prop="a.label" :label="a.value" :sortable="data.sort==false?false:'custom'" + v-for="(a, ai) in tableHead" :key="ai" show-overflow-tooltip min-width="155"> + <template slot-scope="scope"> + <div v-if="showType(a.label, data.tagField) != null"> + <template v-if="typeof(scope.row[a.label]) == 'object'"> + <template v-for="(param, i) in scope.row[a.label]"> + <el-tag v-for="(b, bi) in data.tagField[a.label].select" :key="bi" v-if="b.value == param" + :type="b.type" size="medium" style="margin-right: 5px;">{{b.label}}</el-tag> + </template> + </template> + <template v-else> + <el-tag v-for="(b, bi) in data.tagField[a.label].select" :key="bi" v-if="b.value == scope.row[a.label]" + :type="b.type" size="medium">{{b.label}}</el-tag> + </template> + </div> + <!-- 鍙搷浣滆杩涜鐐瑰嚮浜嬩欢 --> + <span v-else-if="data.linkEvent&&showLink(a.label, data.linkEvent)" style="color:#409EFF;cursor: pointer;" + @click="handleLinkEvent(scope.row,data.linkEvent[a.label])">{{scope.row[a.label]}}</span> + <img style="width: 40px;height: 40px;margin-top: 10px;" :src="javaApi+'/img/'+scope.row[a.label]" + v-else-if="showUpload(a.label)&&scope.row[a.label]" alt=""> + <span v-else>{{scope.row[a.label]}}</span> + </template> + </el-table-column> + <el-table-column fixed="right" align="center" label="鎿嶄綔" :width="getWidth()" v-if="data.do.length > 0"> + <template slot-scope="scope"> + <el-button v-for="(a, ai) in data.do" :key="ai" :type="a.type" + :disabled="a.disabFun ? a.disabFun(scope.row,scope.$index) : false" @click="main(scope.row, a)" + class="handleBtn"> <span v-if="a.type!='upload'">{{a.font}}</span> - <el-upload - :action="javaApi+a.uploadConfig.url+'?id='+scope.row.id" - v-else - :disabled="a.disabFun ? a.disabFun(scope.row,scope.$index) : false" - :on-success="handleSuccessUp" - :show-file-list="false" - :headers="token" - name="file" - :accept='a.uploadConfig.accept' - :on-error="onError" - ref='upload' - style="background: transparent;"> - <span>{{a.font}}</span> - </el-upload> + <el-upload :action="javaApi+a.uploadConfig.url+'?id='+scope.row.id" v-else + :disabled="a.disabFun ? a.disabFun(scope.row,scope.$index) : false" :on-success="handleSuccessUp" + :show-file-list="false" :headers="token" name="file" :accept='a.uploadConfig.accept' :on-error="onError" + ref='upload' style="background: transparent;"> + <span>{{a.font}}</span> + </el-upload> </el-button> - </template> - </el-table-column> - </el-table> - </div> - <div class="page" v-if="data.isPage==undefined||data.isPage"> - <el-pagination @size-change="sizeChange" @current-change="currentChange" :current-page="page.current" - :page-sizes="[10, 20, 30, 50, 100]" :page-size="page.size" layout="total, sizes, prev, pager, next, jumper" - :total="total" > - </el-pagination> - </div> - <el-dialog title="缂栬緫" :visible.sync="upDia" :width="data.row==1?'500px':500+data.row * 200 + 'px'"> - <div class="body" v-if="upDia" style="max-height: 550px;overflow-y: auto;padding: 5px 10px 5px 0;"> - <div v-if="data.row > 1"> - <div v-for="(a, ai) in upHead" :key="ai" style="line-height: 50px;"> - <el-col :span="6/data.row" style="text-align: right;" :offset="1"> - <span class="required-span" v-if="showUpReq(a.label)">* </span>{{a.value}}锛� - </el-col> - <el-col :span="16/data.row"> - <el-input v-model="upData[a.label]" size="small" clearable :placeholder="`璇疯緭鍏�${a.value}`" - v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)" :disabled="isDisabled(a.label)"></el-input> - <el-select v-model="upData[a.label]" :multiple="data.selectField[a.label].choose" size="small" - v-if="showType(a.label, data.selectField) != null" style="width: 100%;" :disabled="isDisabled(a.label)" - clearable filterable> - <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi" :value="b.value" - :label="b.label"> - </el-option> - </el-select> - <el-upload - :action="javaApi+data.addUploadConfig.url" - v-if="showUpload(a.label)" - :on-success="m=>handleSuccessUp(m, a.label)" - :show-file-list="false" - :headers="token" - name="file" - :multiple="false" - :accept='data.addUploadConfig.accept' - :on-error="onError" - ref='upload' - class="avatar-uploader" - style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;"> - <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar" style="width: 80px;height: 80px;border-radius: 6px;"> - <i v-else class="el-icon-plus avatar-uploader-icon"></i> - </el-upload> - <el-cascader - :value="upData[a.label]" - :options="data.cascaderField[a.label].tree" - v-if="showCascader(a.label)" - :show-all-levels="false" - clearable - :props="data.cascaderField.props" - size="small" - style="width: 100%;" - @change="m=>handleCascader(m,a.label)"></el-cascader> - </el-col> - </div> - </div> - <div v-else> - <el-row v-for="(a, ai) in upHead" :key="ai" style="line-height: 50px;"> - <el-col :span="6" style="text-align: right;"> - <span class="required-span" v-if="showUpReq(a.label)">* </span>{{a.value}}锛� - </el-col> - <el-col :span="16" :offset="1"> - <el-input v-model="upData[a.label]" size="small" clearable :placeholder="`璇疯緭鍏�${a.value}`" - v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)" :disabled="isDisabled(a.label)"></el-input> - <el-select v-model="upData[a.label]" :multiple="data.selectField[a.label].choose" size="small" - v-if="showType(a.label, data.selectField) != null" style="width: 100%;" :disabled="isDisabled(a.label)" - clearable filterable> - <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi" :value="b.value" - :label="b.label"></el-option> - </el-select> - <el-upload - :action="javaApi+data.addUploadConfig.url" - v-if="showUpload(a.label)" - :multiple="false" - :on-success="m=>handleSuccessUp(m, a.label)" - :show-file-list="false" - :headers="token" - name="file" - :accept='data.addUploadConfig.accept' - :on-error="onError" - ref='upload' - class="avatar-uploader" - style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;"> - <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar" style="width: 80px;height: 80px;border-radius: 6px;"> - <i v-else class="el-icon-plus avatar-uploader-icon"></i> - </el-upload> - <el-cascader :value="upData[a.label]" :options="data.cascaderField[a.label].tree" :show-all-levels="false" v-if="showCascader(a.label)" clearable :props="data.cascaderField.props" size="small" style="width: 100%;" @change="m=>handleCascader(m,a.label)"></el-cascader> - </el-col> - </el-row> - </div> - </div> - <span slot="footer" class="dialog-footer"> - <el-button @click="upDia = false">鍙� 娑�</el-button> - <el-button type="primary" @click="saveUpData" :loading="upLoad">纭� 瀹�</el-button> - </span> - </el-dialog> - <el-dialog title="鏂板" :visible.sync="addDia" :width="data.row==1?'500px':500+data.row * 200 + 'px'"> - <div class="body" v-if="addDia" style="max-height: 550px;overflow-y: auto;padding: 5px 0;"> - <div v-if="data.row > 1"> - <div v-for="(a, ai) in upHead" :key="ai" style="line-height: 50px;"> - <el-col :span="6/data.row" style="text-align: right;"><span class="required-span" - v-if="showAddReq(a.label)">* - </span>{{a.value}}锛�</el-col> - <el-col :span="16/data.row" :offset="1"> - <el-input v-model="upData[a.label]" size="small" clearable :placeholder="`璇疯緭鍏�${a.value}`" - v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)"></el-input> - <el-select v-model="upData[a.label]" size="small" v-if="showType(a.label, data.selectField) != null" - style="width: 100%;" :placeholder="`璇烽�夋嫨${a.value}`" clearable filterable> - <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi" :value="b.value" - :label="b.label"></el-option> - </el-select> - <el-upload - :action="javaApi+data.addUploadConfig.url" - v-if="showUpload(a.label)" - :on-success="m=>handleSuccessUp(m, a.label)" - :show-file-list="false" - :headers="token" - :multiple="false" - name="file" - :accept='data.addUploadConfig.accept' - :on-error="onError" - ref='upload' - class="avatar-uploader" - style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;"> - <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar" style="width: 80px;height: 80px;border-radius: 6px;"> - <i v-else class="el-icon-plus avatar-uploader-icon"></i> - </el-upload> - <el-cascader :options="data.cascaderField[a.label].tree" v-if="showCascader(a.label)" clearable :props="data.cascaderField.props" size="small" style="width: 100%;" :show-all-levels="false" @change="m=>handleCascader(m,a.label)"></el-cascader> - </el-col> - </div> - </div> - <div v-else> - <el-row v-for="(a, ai) in upHead" :key="ai" style="line-height: 50px;"> - <el-col :span="6" style="text-align: right;"><span class="required-span" v-if="showAddReq(a.label)">* - </span>{{a.value}}锛�</el-col> - <el-col :span="16" :offset="1"> - <el-input v-model="upData[a.label]" size="small" clearable :placeholder="`璇疯緭鍏�${a.value}`" - v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)"></el-input> - <el-select v-model="upData[a.label]" size="small" v-if="showType(a.label, data.selectField) != null" - style="width: 100%;" :placeholder="`璇烽�夋嫨${a.value}`" clearable> - <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi" :value="b.value" - :label="b.label"></el-option> - </el-select> - <el-upload - :action="javaApi+data.addUploadConfig.url" - v-if="showUpload(a.label)" - :on-success="m=>handleSuccessUp(m, a.label)" - :show-file-list="false" - :headers="token" - name="file" - :multiple="false" - :accept='data.addUploadConfig.accept' - :on-error="onError" - ref='upload' - class="avatar-uploader" - style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;"> - <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar" style="width: 80px;height: 80px;border-radius: 6px;"> - <i v-else class="el-icon-plus avatar-uploader-icon"></i> - </el-upload> - <el-cascader :options="data.cascaderField[a.label].tree" v-if="showCascader(a.label)" clearable :props="data.cascaderField.props" size="small" style="width: 100%;" :show-all-levels="false" @change="m=>handleCascader(m,a.label)"></el-cascader> - </el-col> - </el-row> - </div> - </div> - <span slot="footer" class="dialog-footer"> - <el-button @click="addDia = false">鍙� 娑�</el-button> - <el-button type="primary" @click="saveAddData" :loading="addLoad">纭� 瀹�</el-button> - </span> - </el-dialog> - <el-dialog title="瀵煎嚭" :visible.sync="downDia" width="400px"> - <div style="display: flex;width: 100%;height: 100px;"> - <div class="down-left" @click="downFile(true)"> - <el-button>鏈〉瀵煎嚭</el-button> - </div> - <div class="down-right" @click="downFile(false)"> - <el-button>鍏ㄩ儴瀵煎嚭</el-button> - </div> - </div> - </el-dialog> - <el-dialog title="鏁版嵁瀵煎叆" :visible.sync="uploadDia" width="500px"> - <div style="margin: 0 auto;"> - <el-upload ref="upload" drag :action="javaApi + inputUrl" :headers="token" :file-list="fileList" name="file" - :auto-upload="false" accept=".csv" :limit="1" :on-change="beforeUpload" :on-success="onSuccess" - :on-error="onError" :data="{param: data.uploadStr}"> - <i class="el-icon-upload"></i> - <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div> - </el-upload> - </div> - <span slot="footer" class="dialog-footer"> - <el-button @click="uploadDia = false">鍙� 娑�</el-button> - <el-button type="primary" @click="submitUpload()">涓� 浼�</el-button> - </span> - </el-dialog> - </div> + </template> + </el-table-column> + </el-table> + </div> + <div class="page" v-if="data.isPage==undefined||data.isPage"> + <el-pagination @size-change="sizeChange" @current-change="currentChange" :current-page="page.current" + :page-sizes="[10, 20, 30, 50, 100]" :page-size="page.size" layout="total, sizes, prev, pager, next, jumper" + :total="total"> + </el-pagination> + </div> + <el-dialog title="缂栬緫" :visible.sync="upDia" :width="data.row==1?'500px':500+data.row * 200 + 'px'" append-to-body> + <div class="body" v-if="upDia" style="max-height: 550px;overflow-y: auto;padding: 5px 10px 5px 0;"> + <div v-if="data.row > 1"> + <div v-for="(a, ai) in upHead" :key="ai" style="line-height: 50px;"> + <el-col :span="6/data.row" style="text-align: right;" :offset="1"> + <span class="required-span" v-if="showUpReq(a.label)">* </span>{{a.value}}锛� + </el-col> + <el-col :span="16/data.row"> + <el-input v-model="upData[a.label]" size="small" clearable :placeholder="`璇疯緭鍏�${a.value}`" + v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)" + :disabled="isDisabled(a.label)"></el-input> + <el-select v-model="upData[a.label]" :multiple="data.selectField[a.label].choose" size="small" + v-if="showType(a.label, data.selectField) != null" style="width: 100%;" :disabled="isDisabled(a.label)" + clearable filterable> + <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi" :value="b.value" + :label="b.label"> + </el-option> + </el-select> + <el-upload :action="javaApi+data.addUploadConfig.url" v-if="showUpload(a.label)" + :on-success="m=>handleSuccessUp(m, a.label)" :show-file-list="false" :headers="token" name="file" + :multiple="false" :accept='data.addUploadConfig.accept' :on-error="onError" ref='upload' + class="avatar-uploader" + style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;"> + <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar" + style="width: 80px;height: 80px;border-radius: 6px;"> + <i v-else class="el-icon-plus avatar-uploader-icon"></i> + </el-upload> + <el-cascader :value="upData[a.label]" :options="data.cascaderField[a.label].tree" + v-if="showCascader(a.label)" :placeholder="`璇烽�夋嫨${a.value}`" clearable + :props="data.cascaderField.props" size="small" style="width: 100%;" + @change="m=>handleCascader(m,a.label)" filterable></el-cascader> + </el-col> + </div> + </div> + <div v-else> + <el-row v-for="(a, ai) in upHead" :key="ai" style="line-height: 50px;"> + <el-col :span="6" style="text-align: right;"> + <span class="required-span" v-if="showUpReq(a.label)">* </span>{{a.value}}锛� + </el-col> + <el-col :span="16" :offset="1"> + <el-input v-model="upData[a.label]" size="small" clearable :placeholder="`璇疯緭鍏�${a.value}`" + v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)" + :disabled="isDisabled(a.label)"></el-input> + <el-select v-model="upData[a.label]" :multiple="data.selectField[a.label].choose" size="small" + v-if="showType(a.label, data.selectField) != null" style="width: 100%;" :disabled="isDisabled(a.label)" + clearable filterable> + <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi" :value="b.value" + :label="b.label"></el-option> + </el-select> + <el-upload :action="javaApi+data.addUploadConfig.url" v-if="showUpload(a.label)" :multiple="false" + :on-success="m=>handleSuccessUp(m, a.label)" :show-file-list="false" :headers="token" name="file" + :accept='data.addUploadConfig.accept' :on-error="onError" ref='upload' class="avatar-uploader" + style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;"> + <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar" + style="width: 80px;height: 80px;border-radius: 6px;"> + <i v-else class="el-icon-plus avatar-uploader-icon"></i> + </el-upload> + <el-cascader :value="upData[a.label]" :options="data.cascaderField[a.label].tree" :show-all-levels="false" + :placeholder="`璇烽�夋嫨${a.value}`" v-if="showCascader(a.label)" clearable :props="data.cascaderField.props" + size="small" style="width: 100%;" @change="m=>handleCascader(m,a.label)" filterable></el-cascader> + </el-col> + </el-row> + </div> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="upDia = false">鍙� 娑�</el-button> + <el-button type="primary" @click="saveUpData" :loading="upLoad">纭� 瀹�</el-button> + </span> + </el-dialog> + <el-dialog title="鏂板" :visible.sync="addDia" :width="data.row==1?'500px':500+data.row * 200 + 'px'" append-to-body> + <div class="body" v-if="addDia" style="max-height: 550px;overflow-y: auto;padding: 5px 10px 5px 0;"> + <div v-if="data.row > 1"> + <div v-for="(a, ai) in upHead" :key="ai" style="line-height: 50px;"> + <el-col :span="6/data.row" style="text-align: right;"><span class="required-span" + v-if="showAddReq(a.label)">* + </span>{{a.value}}锛�</el-col> + <el-col :span="16/data.row" :offset="1"> + <el-input v-model="upData[a.label]" size="small" clearable :placeholder="`璇疯緭鍏�${a.value}`" + v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)"></el-input> + <el-select v-model="upData[a.label]" size="small" v-if="showType(a.label, data.selectField) != null" + style="width: 100%;" :placeholder="`璇烽�夋嫨${a.value}`" clearable filterable> + <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi" :value="b.value" + :label="b.label"></el-option> + </el-select> + <el-upload :action="javaApi+data.addUploadConfig.url" v-if="showUpload(a.label)" + :on-success="m=>handleSuccessUp(m, a.label)" :show-file-list="false" :headers="token" :multiple="false" + name="file" :accept='data.addUploadConfig.accept' :on-error="onError" ref='upload' + class="avatar-uploader" + style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;"> + <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar" + style="width: 80px;height: 80px;border-radius: 6px;"> + <i v-else class="el-icon-plus avatar-uploader-icon"></i> + </el-upload> + <el-cascader :options="data.cascaderField[a.label].tree" v-if="showCascader(a.label)" clearable + :placeholder="`璇烽�夋嫨${a.value}`" :props="data.cascaderField.props" size="small" style="width: 100%;" + @change="m=>handleCascader(m,a.label)" filterable></el-cascader> + </el-col> + </div> + </div> + <div v-else> + <el-row v-for="(a, ai) in upHead" :key="ai" style="line-height: 50px;"> + <el-col :span="6" style="text-align: right;"><span class="required-span" v-if="showAddReq(a.label)">* + </span>{{a.value}}锛�</el-col> + <el-col :span="16" :offset="1"> + <el-input v-model="upData[a.label]" size="small" clearable :placeholder="`璇疯緭鍏�${a.value}`" + v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)"></el-input> + <el-select v-model="upData[a.label]" size="small" v-if="showType(a.label, data.selectField) != null" + style="width: 100%;" :placeholder="`璇烽�夋嫨${a.value}`" clearable> + <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi" :value="b.value" + :label="b.label"></el-option> + </el-select> + <el-upload :action="javaApi+data.addUploadConfig.url" v-if="showUpload(a.label)" + :on-success="m=>handleSuccessUp(m, a.label)" :show-file-list="false" :headers="token" name="file" + :multiple="false" :accept='data.addUploadConfig.accept' :on-error="onError" ref='upload' + class="avatar-uploader" + style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;"> + <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar" + style="width: 80px;height: 80px;border-radius: 6px;"> + <i v-else class="el-icon-plus avatar-uploader-icon"></i> + </el-upload> + <el-cascader :options="data.cascaderField[a.label].tree" v-if="showCascader(a.label)" clearable + :placeholder="`璇烽�夋嫨${a.value}`" :props="data.cascaderField.props" size="small" style="width: 100%;" + @change="m=>handleCascader(m,a.label)" filterable></el-cascader> + </el-col> + </el-row> + </div> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="addDia = false">鍙� 娑�</el-button> + <el-button type="primary" @click="saveAddData" :loading="addLoad">纭� 瀹�</el-button> + </span> + </el-dialog> + <el-dialog title="瀵煎嚭" :visible.sync="downDia" width="400px"> + <div style="display: flex;width: 100%;height: 100px;"> + <div class="down-left" @click="downFile(true)"> + <el-button>鏈〉瀵煎嚭</el-button> + </div> + <div class="down-right" @click="downFile(false)"> + <el-button>鍏ㄩ儴瀵煎嚭</el-button> + </div> + </div> + </el-dialog> + <el-dialog title="鏁版嵁瀵煎叆" :visible.sync="uploadDia" width="500px"> + <div style="margin: 0 auto;"> + <el-upload ref="upload" drag :action="javaApi + inputUrl" :headers="token" :file-list="fileList" name="file" + :auto-upload="false" accept=".csv" :limit="1" :on-change="beforeUpload" :on-success="onSuccess" + :on-error="onError" :data="{param: data.uploadStr}"> + <i class="el-icon-upload"></i> + <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div> + </el-upload> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="uploadDia = false">鍙� 娑�</el-button> + <el-button type="primary" @click="submitUpload()">涓� 浼�</el-button> + </span> + </el-dialog> + </div> </template> <script> - import { - Page - } from 'iview'; -import { data } from 'jquery'; - export default { - props: { - tableRowClassName: { - type: Function - }, - url: { - type: String, - default: () => null - }, - upUrl: { - type: String, - default: () => null - }, - delUrl: { - type: String, - default: () => null - }, - downUrl: { - type: String, - default: () => null - }, - inputUrl: { - type: String, - default: () => null - }, - componentData: { - type: Object, - default: () => { - return { - entity: { - orderBy: { - field: 'id', - order: 'asc' - } - }, - isIndex: false, - showSelect: false, - select: true, - row: 1, - do: [{ - id: 'update', - font: '缂栬緫', - type: 'text', - method: 'doDiy' - }, { - id: 'delete', - font: '鍒犻櫎', - type: 'text', - method: 'doDiy' - }], - doDiy: true, - tagField: [{ - label: 'state', - select: [{ - value: '1', - type: 'success', - label: '鍚敤' - }, { - value: '0', - type: 'danger', - label: '鍋滅敤' - }] - }] - } - } - } - }, - data() { - return { - data: { - entity: { - orderBy: { - field: 'id', - order: 'asc' - } - }, - isIndex: false, - showSelect: false, - select: true, - row: 1, - isPage:true,// - do: [{ - font: '鍒犻櫎', - type: 'text' - }], - type: [], - uploadStr: "", - currentId:'',//褰撳墠楂樹寒鐨処D - }, - tableHead: [], - tableData: [], - multipleSelection: [], - user: {}, - page: { - current: 1, - size: 20, - }, - total: 0, - loading: false, - upDia: false, - upData: {}, - upHead: [], - upLoad: false, - addDia: false, - addUrl: null, - addLoad: false, - dataCopy: {}, - downDia: false, - uploadDia: false, - token: null, - fileList: [], - init: true, - spanList:[ + import { + Page + } from 'iview'; + import { + data + } from 'jquery'; + export default { + props: { + tableRowClassName: { + type: Function + }, + url: { + type: String, + default: () => null + }, + upUrl: { + type: String, + default: () => null + }, + delUrl: { + type: String, + default: () => null + }, + downUrl: { + type: String, + default: () => null + }, + inputUrl: { + type: String, + default: () => null + }, + componentData: { + type: Object, + default: () => { + return { + entity: { + orderBy: { + field: 'id', + order: 'asc' + } + }, + isIndex: false, + showSelect: false, + select: true, + row: 1, + do: [{ + id: 'update', + font: '缂栬緫', + type: 'text', + method: 'doDiy' + }, { + id: 'delete', + font: '鍒犻櫎', + type: 'text', + method: 'doDiy' + }], + doDiy: true, + tagField: [{ + label: 'state', + select: [{ + value: '1', + type: 'success', + label: '鍚敤' + }, { + value: '0', + type: 'danger', + label: '鍋滅敤' + }] + }] + } + } + } + }, + data() { + return { + data: { + entity: { + orderBy: { + field: 'id', + order: 'asc' + } + }, + isIndex: false, + showSelect: false, + select: true, + row: 1, + isPage: true, // + do: [{ + font: '鍒犻櫎', + type: 'text' + }], + type: [], + uploadStr: "", + currentId: '', //褰撳墠楂樹寒鐨処D + }, + tableHead: [], + tableData: [], + multipleSelection: [], + user: {}, + page: { + current: 1, + size: 20, + }, + total: 0, + loading: false, + upDia: false, + upData: {}, + upHead: [], + upLoad: false, + addDia: false, + addUrl: null, + addLoad: false, + dataCopy: {}, + downDia: false, + uploadDia: false, + token: null, + fileList: [], + init: true, + spanList: [ // { // arr:[], // position:0 // } ], - specialSpanList:[ + specialSpanList: [ // { // arr:[], // position:0 // } ], - } - }, - watch: { - tableData: { - deep: true, - handler: function() { - this.$nextTick(() => { - this.$refs.eltable.doLayout() - }) - } - }, - }, - mounted() { - this.data = this.componentData - this.dataCopy = this.HaveJson(this.componentData) - if(this.data.init===undefined||this.data.init===true){ - this.selectList() - } - this.token = { - 'token': sessionStorage.getItem('token') - } - }, - methods: { + param: {} + } + }, + watch: { + tableData: { + deep: true, + handler: function() { + this.$nextTick(() => { + this.$refs.eltable.doLayout() + }) + } + }, + }, + beforeUpdate() { + this.$nextTick(() => { + this.$refs.eltable.doLayout() + }) + }, + mounted() { + this.data = this.componentData + this.dataCopy = this.HaveJson(this.componentData) + if (this.data.init === undefined || this.data.init === true) { + this.selectList() + } + this.token = { + 'token': sessionStorage.getItem('token') + } + }, + methods: { rowspan(spanArr, position, spanName) { this.tableData.forEach((item, index) => { if (index === 0) { @@ -523,15 +494,20 @@ } }); }, - spanMethod({ row, column, rowIndex, columnIndex }){ + spanMethod({ + row, + column, + rowIndex, + columnIndex + }) { // 涓�鑸殑鍚堝苟琛� - if(this.data.spanConfig!=undefined&&this.data.spanConfig.rows&&this.data.spanConfig.rows.length>0){ + if (this.data.spanConfig != undefined && this.data.spanConfig.rows && this.data.spanConfig.rows.length > 0) { let i = null; - let obj = this.data.spanConfig.rows.find((item,index)=>{ + let obj = this.data.spanConfig.rows.find((item, index) => { i = index; - return item.index==columnIndex + return item.index == columnIndex }) - if(obj){ + if (obj) { const _row = this.spanList[i].arr[rowIndex]; const _col = _row > 0 ? 1 : 0; return { @@ -541,13 +517,14 @@ } } // 鐗规畩鐨勫悎骞惰 - if(this.data.spanConfig!=undefined&&this.data.spanConfig.special&&this.data.spanConfig.special.main&&this.data.spanConfig.special.rows&&this.data.spanConfig.special.rows.length>0){ + if (this.data.spanConfig != undefined && this.data.spanConfig.special && this.data.spanConfig.special.main && + this.data.spanConfig.special.rows && this.data.spanConfig.special.rows.length > 0) { let i = null; - let obj = this.data.spanConfig.special.rows.find((item,index)=>{ + let obj = this.data.spanConfig.special.rows.find((item, index) => { i = index; - return item.index==columnIndex + return item.index == columnIndex }) - if(obj){ + if (obj) { const _row = this.specialSpanList[i].arr[rowIndex]; const _col = _row > 0 ? 1 : 0; return { @@ -557,546 +534,555 @@ } } }, - selectChange(val) { - if (this.data.select) { - this.multipleSelection = val; - } else { - this.multipleSelection = val[val.length - 1]; - } - if(this.data.selectMethod!=undefined){ - if(this.$parent.$el.className.indexOf('el-')==0){ + selectChange(val) { + if (this.data.select) { + this.multipleSelection = val; + } else { + this.multipleSelection = val[val.length - 1]; + } + if (this.data.selectMethod != undefined) { + if (this.$parent.$el.className.indexOf('el-') == 0) { this.$parent.$parent[this.data.selectMethod](val) - }else{ + } else { this.$parent[this.data.selectMethod](val) } } - }, - select(val, row) { - if (!this.data.select) { - this.$refs['eltable'].clearSelection() - this.$refs['eltable'].toggleRowSelection(row, true) - } - }, - rowClick(row, column, event) { - if (this.data.select) { - this.$refs['eltable'].toggleRowSelection(row) - } else { - this.$refs['eltable'].clearSelection() - this.$refs['eltable'].toggleRowSelection(row, true) - } - }, - sizeChange(val) { - this.page.size = val - this.selectList() - }, - currentChange(val) { - this.page.current = val - this.selectList() - }, - selectList() { - this.loading = true - if(this.data.isPage!=undefined&&this.data.isPage!=true){ + }, + select(val, row) { + if (!this.data.select) { + this.$refs['eltable'].clearSelection() + this.$refs['eltable'].toggleRowSelection(row, true) + } + }, + rowClick(row, column, event) { + if (this.data.select) { + this.$refs['eltable'].toggleRowSelection(row) + } else { + this.$refs['eltable'].clearSelection() + this.$refs['eltable'].toggleRowSelection(row, true) + } + }, + sizeChange(val) { + this.page.size = val + this.selectList() + }, + currentChange(val) { + this.page.current = val + this.selectList() + }, + selectList() { + this.loading = true + if (this.data.isPage != undefined && this.data.isPage != true) { this.page = { current: -1, size: -1, } } - this.$axios.post(this.url, { - page: this.page, - entity: this.data.entity - }, { - headers: { - 'Content-Type': 'application/json' - } - }).then(res => { - if (res.code === 201) { - this.loading = false - return - } - this.total = res.data.body.total - this.tableHead = res.data.head - this.tableData = res.data.body.records - for (var a in this.data.selectField) { - if (this.data.selectField[a].choose == true) { - this.tableData.map(b => { - try { - b[a] = JSON.parse(b[a]) - } catch (e) {} - }) - } - } + this.$axios.post(this.url, { + page: this.page, + entity: this.data.entity + }, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + if (res.code === 201) { + this.loading = false + return + } + this.total = res.data.body.total + this.tableHead = res.data.head + this.tableData = res.data.body.records + for (var a in this.data.selectField) { + if (this.data.selectField[a].choose == true) { + this.tableData.map(b => { + try { + b[a] = JSON.parse(b[a]) + } catch (e) {} + }) + } + } // 涓�鑸殑鍚堝苟琛� - if(this.data.spanConfig!=undefined&&this.data.spanConfig.rows&&this.data.spanConfig.rows.length>0){ + if (this.data.spanConfig != undefined && this.data.spanConfig.rows && this.data.spanConfig.rows.length > + 0) { this.spanList = []; - this.data.spanConfig.rows.forEach((item,index)=>{ + this.data.spanConfig.rows.forEach((item, index) => { this.spanList.push({ - arr:[], - position:0 + arr: [], + position: 0 }) this.rowspan(this.spanList[index].arr, this.spanList[index].position, item.name); }) } // 鐗规畩鐨勫悎骞惰 - if(this.data.spanConfig!=undefined&&this.data.spanConfig.special&&this.data.spanConfig.special.main&&this.data.spanConfig.special.rows&&this.data.spanConfig.special.rows.length>0){ + if (this.data.spanConfig != undefined && this.data.spanConfig.special && this.data.spanConfig.special + .main && this.data.spanConfig.special.rows && this.data.spanConfig.special.rows.length > 0) { this.specialSpanList = [] - this.data.spanConfig.special.rows.forEach((item,index)=>{ + this.data.spanConfig.special.rows.forEach((item, index) => { this.specialSpanList.push({ - arr:[], - position:0 + arr: [], + position: 0 }) - this.rowspan(this.specialSpanList[index].arr, this.specialSpanList[index].position, this.data.spanConfig.special.main); + this.rowspan(this.specialSpanList[index].arr, this.specialSpanList[index].position, this.data + .spanConfig.special.main); }) } - this.loading = false - }).catch(e => { - this.loading = false - this.$message.error('璇峰埛鏂伴〉闈㈠啀灏濊瘯') - }) - }, - sortChange(ob) { - this.data.entity.orderBy = {} - this.data.entity.orderBy.field = ob.prop - if (ob.order == 'ascending') { - this.data.entity.orderBy.order = 'asc' - } else if (ob.order == 'descending') { - this.data.entity.orderBy.order = 'desc' - } else { - if (this.componentData.entity.orderBy != undefined) { - this.data.entity.orderBy = this.HaveJson(this.dataCopy.entity.orderBy) - } - } - this.selectList() - }, - showType(val, ob) { - var str = ob[val] - return str == undefined ? null : ob[val].select - }, - showLink(val, ob) { - var str = ob[val] - return str == undefined ? null : ob[val].method - }, - showAddReq(label) { - if (this.data.requiredAdd == undefined) { - return - } - for (var i = 0; i < this.data.requiredAdd.length; i++) { - if (label == this.data.requiredAdd[i]) { - return true - } - } - return false - }, - showUpReq(label) { - if (this.data.requiredUp == undefined) { - return - } - for (var i = 0; i < this.data.requiredUp.length; i++) { - if (label == this.data.requiredUp[i]) { - return true - } - } - return false - }, - showUpload(label){ - if(this.data.addUpload&&this.data.addUpload.find(m=>m==label)){ + this.loading = false + }).catch(e => { + this.loading = false + this.$message.error('璇峰埛鏂伴〉闈㈠啀灏濊瘯') + }) + }, + sortChange(ob) { + this.data.entity.orderBy = {} + this.data.entity.orderBy.field = ob.prop + if (ob.order == 'ascending') { + this.data.entity.orderBy.order = 'asc' + } else if (ob.order == 'descending') { + this.data.entity.orderBy.order = 'desc' + } else { + if (this.componentData.entity.orderBy != undefined) { + this.data.entity.orderBy = this.HaveJson(this.dataCopy.entity.orderBy) + } + } + this.selectList() + }, + showType(val, ob) { + var str = ob[val] + return str == undefined ? null : ob[val].select + }, + showLink(val, ob) { + var str = ob[val] + return str == undefined ? null : ob[val].method + }, + showAddReq(label) { + if (this.data.requiredAdd == undefined) { + return + } + for (var i = 0; i < this.data.requiredAdd.length; i++) { + if (label == this.data.requiredAdd[i]) { + return true + } + } + return false + }, + showUpReq(label) { + if (this.data.requiredUp == undefined) { + return + } + for (var i = 0; i < this.data.requiredUp.length; i++) { + if (label == this.data.requiredUp[i]) { + return true + } + } + return false + }, + showUpload(label) { + if (this.data.addUpload && this.data.addUpload.find(m => m == label)) { return true; - }else{ + } else { return false; } }, - showCascader(label){ - if(this.data.cascaderField&&this.data.cascaderField[label]){ + showCascader(label) { + if (this.data.cascaderField && this.data.cascaderField[label]) { return true; - }else{ + } else { return false; } }, - handleTree(arr,value){ + handleTree(arr, value) { let label = '' for (let i = 0; i < arr.length; i++) { - if(arr[i].id==value){ + if (arr[i].id == value) { label = arr[i].name return label - }else if(arr[i].children){ - label = this.handleTree(arr[i].children,value) + } else if (arr[i].children) { + label = this.handleTree(arr[i].children, value) } } return label }, - main(row, val) { - if (val.method == undefined) return - else if (val.method == 'doDiy') { - if (val.id == 'update') { - this.upDia = true, - this.upData = this.HaveJson(row) - this.upHead = this.HaveJson(this.tableHead) - this.upHead.forEach((item,index)=>{ - if(this.data.cascaderField&&this.data.cascaderField[item.label]){ - if(this.upData[item.label]){ - this.upData[item.label] = this.upData[item.label].split(',').map(m=>Number(m)); - }else{ + main(row, val) { + if (val.method == undefined) return + else if (val.method == 'doDiy') { + if (val.id == 'update') { + this.upDia = true, + this.upData = this.HaveJson(row) + this.upHead = this.HaveJson(this.tableHead) + this.upHead.forEach((item, index) => { + if (this.data.cascaderField && this.data.cascaderField[item.label]) { + if (this.upData[item.label]) { + this.upData[item.label] = JSON.parse(this.upData[item.label]) + } else { this.upData[item.label] = [] } } }) - this.upHead = this.upHead.filter(a => a.label != 'createTime' && a.label != 'updateTime') - delete this.upData.orderBy - delete this.upData.createTime - delete this.upData.updateTime - delete this.upData.createUser - delete this.upData.updateUser - val.field.forEach(a => { - if (this.upData[a] === undefined) { - this.upHead.push({ - value: a.split('=')[0], - label: a.split('=')[1] - }) - } else { - delete this.upData[a] - for (var i = 0; i < this.upHead.length; i++) { - if (this.upHead[i].label == a) { - this.upHead.splice(i, 1); - i-- - break - } - } - } - }) - } else if (val.id == 'delete') { - if (this.delUrl == null) { - this.$message.error('璇风粰鍒犻櫎璇锋眰鍦板潃') - return - } - this.$confirm('鏄惁鍒犻櫎褰撳墠鏁版嵁?', "璀﹀憡", { - confirmButtonText: "纭畾", - cancelButtonText: "鍙栨秷", - type: "warning" - }).then(() => { - this.$axios.post(this.delUrl, { - id: row.id - }).then(res => { - if (res.code === 201) { - return - } - this.$message.success('鍒犻櫎鎴愬姛') - this.selectList() - }).catch(e => { - this.$message.error('鍒犻櫎澶辫触') - }) - }).catch(() => {}) - } - } else { - delete row.orderBy - this.$parent[val.method](row) - } - }, - saveUpData() { - if (this.upUrl == null) { - this.$message.error('璇风粰淇敼璇锋眰鍦板潃') - return - } - for (var i = 0; i < this.data.requiredUp.length; i++) { - if (this.upData[this.data.requiredUp[i]] === null || this.upData[this.data.requiredUp[i]] === '') { - var list = this.upHead.filter(a => { - if (a.label == this.data.requiredUp[i]) return a - }) - if (list[0].value == undefined) continue - this.$message.error(list[0].value + '鏄繀濉」') - return - } - } - this.upLoad = true - for (var a in this.data.selectField) { - if (this.data.selectField[a].choose == true) { - this.upData[a] = JSON.stringify(this.upData[a]) - } - } - this.upHead.forEach((item,index)=>{ - if(this.data.cascaderField&&this.data.cascaderField[item.label]){ - if(this.upData[item.label]){ - this.upData[item.label] = this.upData[item.label].join(','); - }else{ + this.upHead = this.upHead.filter(a => a.label != 'createTime' && a.label != 'updateTime') + delete this.upData.orderBy + delete this.upData.createTime + delete this.upData.updateTime + delete this.upData.createUser + delete this.upData.updateUser + val.field.forEach(a => { + if (this.upData[a] === undefined) { + this.upHead.push({ + value: a.split('=')[0], + label: a.split('=')[1] + }) + } else { + delete this.upData[a] + for (var i = 0; i < this.upHead.length; i++) { + if (this.upHead[i].label == a) { + this.upHead.splice(i, 1); + i-- + break + } + } + } + }) + } else if (val.id == 'delete') { + if (this.delUrl == null) { + this.$message.error('璇风粰鍒犻櫎璇锋眰鍦板潃') + return + } + this.$confirm('鏄惁鍒犻櫎褰撳墠鏁版嵁?', "璀﹀憡", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning" + }).then(() => { + this.$axios.post(this.delUrl, { + id: row.id + }).then(res => { + if (res.code === 201) { + return + } + this.$message.success('鍒犻櫎鎴愬姛') + this.selectList() + }).catch(e => { + this.$message.error('鍒犻櫎澶辫触') + }) + }).catch(() => {}) + } + } else { + delete row.orderBy + this.$parent[val.method](row) + } + }, + saveUpData() { + if (this.upUrl == null) { + this.$message.error('璇风粰淇敼璇锋眰鍦板潃') + return + } + for (var i = 0; i < this.data.requiredUp.length; i++) { + if (this.upData[this.data.requiredUp[i]] === null || this.upData[this.data.requiredUp[i]] === '') { + var list = this.upHead.filter(a => { + if (a.label == this.data.requiredUp[i]) return a + }) + if (list[0].value == undefined) continue + this.$message.error(list[0].value + '鏄繀濉」') + return + } + } + this.upLoad = true + for (var a in this.data.selectField) { + if (this.data.selectField[a].choose == true) { + this.upData[a] = JSON.stringify(this.upData[a]) + } + } + this.upHead.forEach((item, index) => { + if (this.data.cascaderField && this.data.cascaderField[item.label]) { + if (this.upData[item.label]) { + this.upData[item.label] = JSON.stringify(this.upData[item.label]) + } else { this.upData[item.label] = '' } } }) - this.$axios.post(this.upUrl, this.upData, { - headers: { - 'Content-Type': 'application/json' - } - }).then(res => { - if (res.code === 201) { - this.upLoad = false - return - } - this.$message.success('淇敼鎴愬姛') - this.upDia = false - this.selectList() + this.$axios.post(this.upUrl, this.upData, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + if (res.code === 201) { + this.upLoad = false + return + } + this.$message.success('淇敼鎴愬姛') + this.upDia = false + this.selectList() this.$refs.eltable.doLayout(); - this.upLoad = false - }).catch(e => { - this.$message.error('淇敼澶辫触') - this.upDia = false - this.upLoad = false - }) - }, - openAddDia(addUrl) { - this.addDia = true - this.addUrl = addUrl - this.upData = {} - this.tableHead.forEach((k, v) => { - if (k.label != 'orderBy' && k.label != 'createTime' && k.label != 'updateTime' && k.label != - 'createUser' && k.label != 'updateUser') - this.upData[k.label] = null - }) - this.upData = this.HaveJson(this.upData) - this.upHead = this.HaveJson(this.tableHead) - this.upHead = this.upHead.filter(a => a.label != 'createTime' && a.label != 'updateTime') - var val = this.data.do.filter(a => a.id == 'update')[0] - if (val == undefined) { - val = { - field: [] - } - } - val.field.forEach(a => { - if (JSON.stringify(this.upData[a]) === undefined) { - this.upHead.push({ - value: a.split('=')[0], - label: a.split('=')[1] - }) - } else { - delete this.upData[a] - for (var i = 0; i < this.upHead.length; i++) { - if (this.upHead[i].label == a) { - this.upHead.splice(i, 1); - i-- - break - } - } - } - }) - }, - saveAddData() { - if (this.addUrl == null) { - this.$message.error('璇风粰娣诲姞璇锋眰鍦板潃') - return - } - for (var i = 0; i < this.data.requiredAdd.length; i++) { - if (this.upData[this.data.requiredAdd[i]] === null || this.upData[this.data.requiredAdd[i]] === '') { - var list = this.upHead.filter(a => { - if (a.label == this.data.requiredAdd[i]) return a - }) - if (list[0].value == undefined) continue - this.$message.error(list[0].value + '鏄繀濉」') - return - } - } - this.addLoad = true - this.upHead.forEach((item,index)=>{ - if(this.data.cascaderField&&this.data.cascaderField[item.label]){ - if(this.upData[item.label]){ - this.upData[item.label] = this.upData[item.label].join(','); - }else{ + this.upLoad = false + }).catch(e => { + this.$message.error('淇敼澶辫触') + this.upDia = false + this.upLoad = false + }) + }, + openAddDia(addUrl, param) { + this.addDia = true + this.addUrl = addUrl + this.param = param + this.upData = {} + this.tableHead.forEach((k, v) => { + if (k.label != 'orderBy' && k.label != 'createTime' && k.label != 'updateTime' && k.label != + 'createUser' && k.label != 'updateUser') + this.upData[k.label] = null + }) + this.upData = this.HaveJson(this.upData) + this.upHead = this.HaveJson(this.tableHead) + this.upHead = this.upHead.filter(a => a.label != 'createTime' && a.label != 'updateTime') + var val = this.data.do.filter(a => a.id == 'update')[0] + if (val == undefined) { + val = { + field: [] + } + } + val.field.forEach(a => { + if (JSON.stringify(this.upData[a]) === undefined) { + this.upHead.push({ + value: a.split('=')[0], + label: a.split('=')[1] + }) + } else { + delete this.upData[a] + for (var i = 0; i < this.upHead.length; i++) { + if (this.upHead[i].label == a) { + this.upHead.splice(i, 1); + i-- + break + } + } + } + }) + }, + saveAddData() { + if (this.addUrl == null) { + this.$message.error('璇风粰娣诲姞璇锋眰鍦板潃') + return + } + for (var i = 0; i < this.data.requiredAdd.length; i++) { + if (this.upData[this.data.requiredAdd[i]] === null || this.upData[this.data.requiredAdd[i]] === '') { + var list = this.upHead.filter(a => { + if (a.label == this.data.requiredAdd[i]) return a + }) + if (list[0].value == undefined) continue + this.$message.error(list[0].value + '鏄繀濉」') + return + } + } + this.addLoad = true + this.upHead.forEach((item, index) => { + if (this.data.cascaderField && this.data.cascaderField[item.label]) { + if (this.upData[item.label]) { + this.upData[item.label] = JSON.stringify(this.upData[item.label]) + } else { this.upData[item.label] = '' } } }) - this.$axios.post(this.addUrl, this.upData, { - headers: { - 'Content-Type': 'application/json' - } - }).then(res => { - if (res.code === 201) { - this.addLoad = false - return - } - this.$message.success('娣诲姞鎴愬姛') - this.addDia = false - this.selectList() - this.addLoad = false - }).catch(e => { - this.addDia = false - this.addLoad = false - }) - }, - openDownDia() { - this.downDia = true - }, - downFile(type) { - if (this.downUrl == null) { - this.$message.error('璇风粰瀵煎嚭璇锋眰鍦板潃') - return - } - var page = this.HaveJson(this.page) - if (!type) { - page.current = 0 - page.size = this.total - } - this.loading = true - this.$axios.post(this.downUrl, { - page: page, - entity: this.data.entity - }, { - headers: { - 'Content-Type': 'application/json' - } - }).then(res => { - if (res.code === 201) { - this.loading = false - return - } - this.downDia = false - this.loading = false - this.$message.success('瀵煎嚭鎴愬姛') - let eleLink = document.createElement('a') - eleLink.style.display = 'none' - eleLink.download = res.data - eleLink.href = this.javaApi + '/outPath/' + res.data - document.body.appendChild(eleLink) - eleLink.click() - document.body.removeChild(eleLink) - }).catch(e => { - console.log(e); - this.loading = false - this.$message.error('璇峰埛鏂伴〉闈㈠啀灏濊瘯') - }) - }, - openUpload() { - if (this.inputUrl == null) { - this.$message.error('璇风粰瀵煎叆璇锋眰鍦板潃') - return - } - this.uploadDia = true - }, - beforeUpload(file, fileList) { - if (file.raw.type != 'text/csv') { - this.$message.error('涓婁紶鏂囦欢鏍煎紡涓嶆纭�'); - this.$refs.upload.clearFiles() - return false; - } - }, - submitUpload() { - if (this.$refs.upload.uploadFiles.length == 0) { - this.$message.error('鏈�夋嫨鏂囦欢') - return - } - this.uploading = true - this.$refs.upload.submit(); - }, - onSuccess(response, file, fileList) { - this.$refs.upload.clearFiles() - this.uploadDia = false - this.uploading = false - if (response.code == 201) { - this.$message.error(response.message) - return - } - this.$message.success('涓婁紶鎴愬姛') - this.selectList() - }, - onError(err, file, fileList) { - this.$message.error('涓婁紶澶辫触') - this.$refs.upload.clearFiles() - this.uploading = false - }, - isDisabled(label) { - if (this.data.disabledUp == undefined) { - return - } - for (var i = 0; i < this.data.disabledUp.length; i++) { - if (label == this.data.disabledUp[i]) { - return true - } - } - return false - }, - getSummaries(param) { - const { - columns, - data - } = param; - const sums = []; - columns.forEach((column, index) => { - if (index === 0) { - sums[index] = '鍚堣'; - return; - } - const values = data.map(item => Number(item[column.property])); - if (this.data.countFleid == undefined) { - sums[index] = '' - return - } - if (this.data.countFleid.filter(str => { - return str === column.property - }).length > 0) { - sums[index] = values.reduce((prev, curr) => { - const value = Number(curr); - if (!isNaN(value)) { - return prev + curr; - } else { - return prev; - } - }, 0); - sums[index] += ''; - } else { - sums[index] = ''; - } - }); - return sums; - }, - handleLinkEvent(row, val) { - if (val.method == 'doDiy') { - this.main(row, val) - } else { - this.$parent[val.method](row) - } - }, - getWidth() { - let count = 0 - this.data.do.forEach(a => { - count += a.font.length - }) - return count * 15 + 60 + 'px' - }, - handleSuccessUp(response,label){ - if(typeof label === 'string'){ - if(response.code==200){ + if (this.param !== undefined && this.param !== null) { + for (let i in this.param) { + this.upData[i] = this.param[i] + } + } + this.$axios.post(this.addUrl, this.upData, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + if (res.code === 201) { + this.addLoad = false + return + } + this.$message.success('娣诲姞鎴愬姛') + this.addDia = false + this.selectList() + this.addLoad = false + }).catch(e => { + this.addDia = false + this.addLoad = false + }) + }, + openDownDia() { + this.downDia = true + }, + downFile(type) { + if (this.downUrl == null) { + this.$message.error('璇风粰瀵煎嚭璇锋眰鍦板潃') + return + } + var page = this.HaveJson(this.page) + if (!type) { + page.current = 0 + page.size = this.total + } + this.loading = true + this.$axios.post(this.downUrl, { + page: page, + entity: this.data.entity + }, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + if (res.code === 201) { + this.loading = false + return + } + this.downDia = false + this.loading = false + this.$message.success('瀵煎嚭鎴愬姛') + let eleLink = document.createElement('a') + eleLink.style.display = 'none' + eleLink.download = res.data + eleLink.href = this.javaApi + '/outPath/' + res.data + document.body.appendChild(eleLink) + eleLink.click() + document.body.removeChild(eleLink) + }).catch(e => { + console.log(e); + this.loading = false + this.$message.error('璇峰埛鏂伴〉闈㈠啀灏濊瘯') + }) + }, + openUpload() { + if (this.inputUrl == null) { + this.$message.error('璇风粰瀵煎叆璇锋眰鍦板潃') + return + } + this.uploadDia = true + }, + beforeUpload(file, fileList) { + if (file.raw.type != 'text/csv') { + this.$message.error('涓婁紶鏂囦欢鏍煎紡涓嶆纭�'); + this.$refs.upload.clearFiles() + return false; + } + }, + submitUpload() { + if (this.$refs.upload.uploadFiles.length == 0) { + this.$message.error('鏈�夋嫨鏂囦欢') + return + } + this.uploading = true + this.$refs.upload.submit(); + }, + onSuccess(response, file, fileList) { + this.$refs.upload.clearFiles() + this.uploadDia = false + this.uploading = false + if (response.code == 201) { + this.$message.error(response.message) + return + } + this.$message.success('涓婁紶鎴愬姛') + this.selectList() + }, + onError(err, file, fileList) { + this.$message.error('涓婁紶澶辫触') + this.$refs.upload.clearFiles() + this.uploading = false + }, + isDisabled(label) { + if (this.data.disabledUp == undefined) { + return + } + for (var i = 0; i < this.data.disabledUp.length; i++) { + if (label == this.data.disabledUp[i]) { + return true + } + } + return false + }, + getSummaries(param) { + const { + columns, + data + } = param; + const sums = []; + columns.forEach((column, index) => { + if (index === 0) { + sums[index] = '鍚堣'; + return; + } + const values = data.map(item => Number(item[column.property])); + if (this.data.countFleid == undefined) { + sums[index] = '' + return + } + if (this.data.countFleid.filter(str => { + return str === column.property + }).length > 0) { + sums[index] = values.reduce((prev, curr) => { + const value = Number(curr); + if (!isNaN(value)) { + return prev + curr; + } else { + return prev; + } + }, 0); + sums[index] += ''; + } else { + sums[index] = ''; + } + }); + return sums; + }, + handleLinkEvent(row, val) { + if (val.method == 'doDiy') { + this.main(row, val) + } else { + this.$parent[val.method](row) + } + }, + getWidth() { + let count = 0 + this.data.do.forEach(a => { + count += a.font.length + }) + return count * 15 + 60 + 'px' + }, + handleSuccessUp(response, label) { + if (typeof label === 'string') { + if (response.code == 200) { this.upData[label] = response.data.url; } - }else{ - if(response.code==200){ + } else { + if (response.code == 200) { this.$message.success('涓婁紶鎴愬姛') this.selectList() } } }, - handleCascader(e,label){ + handleCascader(e, label) { this.upData[label] = e; }, // 鎵归噺鍒犻櫎 - batchDelete(){ - if(this.multipleSelection&&this.multipleSelection.length>0){ + batchDelete() { + if (this.multipleSelection && this.multipleSelection.length > 0) { this.$confirm('鏄惁鍒犻櫎閫変腑鐨勬暟鎹�?', "璀﹀憡", { - confirmButtonText: "纭畾", - cancelButtonText: "鍙栨秷", - type: "warning" - }).then(() => { - this.$axios.post(this.delUrl, { - ids: JSON.stringify(this.multipleSelection.map(item => item.id)) - }).then(res => { - if (res.code === 201) { - return - } - this.$message.success('鍒犻櫎鎴愬姛') - this.selectList() - }).catch(e => { - this.$message.error('鍒犻櫎澶辫触') - }) - }).catch(() => {}) - }else{ + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning" + }).then(() => { + this.$axios.post(this.delUrl, { + ids: JSON.stringify(this.multipleSelection.map(item => item.id)) + }).then(res => { + if (res.code === 201) { + return + } + this.$message.success('鍒犻櫎鎴愬姛') + this.selectList() + }).catch(e => { + this.$message.error('鍒犻櫎澶辫触') + }) + }).catch(() => {}) + } else { this.$message.error('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁') } }, - } - } + } + } </script> -- Gitblit v1.9.3